fix: address Phase 1 code review findings

- Serve cache via template_redirect so feeds/404/REST are excluded and
  query conditionals work
- Bypass cache on query strings; key files by md5(host+path) to avoid
  collisions and support multisite
- Write wp-content/wp-recache-cache.php drop-in server and set WP_CACHE
  in wp-config.php so advanced-cache.php actually runs
- Only remove advanced-cache.php on deactivation when it is ours
- Respect DONOTCACHEPAGE, non-200 responses; bots read but never warm
  cache
- Fix comment purge (comment_post_ID) and heartbeat purge ($data arg)
- Fix exclude URLs textarea parsing; purge all when exclusions change
- Enqueue admin purge script on every admin-bar page, not just settings
- Sync tests, add TESTING.md manual test guide
This commit is contained in:
2026-09-13 13:44:30 +02:00
parent 33099591f5
commit d2be239c3f
12 changed files with 309 additions and 78 deletions
+1 -21
View File
@@ -48,7 +48,7 @@ $stats = WP_Recache_Admin::get_cache_stats();
<tr>
<th scope="row">Exclude URLs</th>
<td>
<textarea name="wp_recache_exclude_urls[]" rows="5" cols="50" class="large-text"><?php echo esc_textarea(implode("\n", get_option('wp_recache_exclude_urls', ['/cart', '/checkout', '/my-account']))); ?></textarea>
<textarea name="wp_recache_exclude_urls" rows="5" cols="50" class="large-text"><?php echo esc_textarea(implode("\n", get_option('wp_recache_exclude_urls', ['/cart', '/checkout', '/my-account']))); ?></textarea>
<p class="description">One URL per line. These pages will not be cached.</p>
</td>
</tr>
@@ -131,23 +131,3 @@ $stats = WP_Recache_Admin::get_cache_stats();
<?php submit_button('Save Settings'); ?>
</form>
</div>
<script>
function wpRecachePurgeAll() {
if (!confirm('Are you sure you want to purge all cache?')) {
return;
}
jQuery.post(wpRecache.ajaxUrl, {
action: 'wp_recache_purge_all',
nonce: wpRecache.nonce
}, function(response) {
if (response.success) {
alert('Cache purged successfully');
location.reload();
} else {
alert('Error: ' + response.data);
}
});
}
</script>