Implement the core page caching functionality and admin settings interface for WP Recache plugin. This includes: - Plugin bootstrap with activation/deactivation handlers - Admin settings page with tabbed interface (Cache, Optimization, Advanced) - Admin bar integration for quick cache purging - Core page cache using output buffering - Cache file management with mobile device separation - Cache purge on post update/comment - Default URL exclusions (cart, checkout, account) - Cache statistics display - PHPUnit test suite setup - Docker-based development environment - PHPStan configuration for static analysis References: - Closes #1 (Core Page Cache) - Closes #8 (Admin Settings UI)
52 lines
1.2 KiB
PHP
52 lines
1.2 KiB
PHP
<?php
|
|
/**
|
|
* Plugin uninstall handler.
|
|
*
|
|
* @package WP_Recache
|
|
*/
|
|
|
|
defined('WP_UNINSTALL_PLUGIN') || exit;
|
|
|
|
// Delete all options.
|
|
$options = [
|
|
'wp_recache_cache_enabled',
|
|
'wp_recache_separate_mobile_cache',
|
|
'wp_recache_exclude_urls',
|
|
'wp_recache_minify_css',
|
|
'wp_recache_minify_js',
|
|
'wp_recache_lazyload_images',
|
|
'wp_recache_preload_enabled',
|
|
];
|
|
|
|
foreach ($options as $option) {
|
|
delete_option($option);
|
|
}
|
|
|
|
// Delete cache files.
|
|
$cache_path = WP_CONTENT_DIR . '/cache/wp-recache/';
|
|
if (is_dir($cache_path)) {
|
|
$files = new RecursiveIteratorIterator(
|
|
new RecursiveDirectoryIterator($cache_path, RecursiveDirectoryIterator::SKIP_DOTS),
|
|
RecursiveIteratorIterator::CHILD_FIRST
|
|
);
|
|
|
|
foreach ($files as $file) {
|
|
if ($file->isDir()) {
|
|
rmdir($file->getRealPath());
|
|
} else {
|
|
unlink($file->getRealPath());
|
|
}
|
|
}
|
|
|
|
rmdir($cache_path);
|
|
}
|
|
|
|
// Remove advanced-cache.php if it's ours.
|
|
$advanced_cache = WP_CONTENT_DIR . '/advanced-cache.php';
|
|
if (file_exists($advanced_cache)) {
|
|
$content = file_get_contents($advanced_cache);
|
|
if (strpos($content, 'WP Recache') !== false) {
|
|
unlink($advanced_cache);
|
|
}
|
|
}
|