Как автоматизировать удаление старого кеша в WordPress

|

В WordPress кеширование — это мощный инструмент для ускорения загрузки страниц и снижения нагрузки на сервер. Однако без регулярного очищения старого кеша он может привести к проблемам с отображением контента и даже снижению производительности. В этой статье мы подробно рассмотрим, как автоматизировать удаление старого кеша в WordPress с помощью как готовых решений, так и кастомных скриптов.

Почему важно удалять старый кеш в WordPress

Кеш хранит версии страниц, скриптов, стилей и других элементов сайта для быстрого отображения посетителям. Но со временем кеш устаревает — появляются обновления контента, новые стили, исправления ошибок. Если кеш не обновлять, посетители увидят старую информацию, что ухудшит UX и SEO. Кроме того, накопление кеша занимает место на сервере, что негативно влияет на его производительность.

Регулярное удаление устаревшего кеша позволяет:

Автоматизация удаления кеша через WP-Cron

WordPress имеет встроенную систему планировщика задач — WP-Cron. С её помощью можно настроить регулярное выполнение функций, например, очистку кеша.

Создаем функцию очистки кеша

В зависимости от используемого решения кеширования, способы очистки отличаются. Рассмотрим универсальный пример для файлового кеша в папке wp-content/cache/:

function wpdetect_clear_old_cache() {
    $cache_dir = WP_CONTENT_DIR . '/cache/';
    if (!is_dir($cache_dir)) return;

    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($cache_dir, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::CHILD_FIRST
    );

    $now = time();
    $max_age = 86400; // 24 часа

    foreach ($files as $fileinfo) {
        if ($fileinfo->isFile()) {
            if ($now - $fileinfo->getMTime() > $max_age) {
                @unlink($fileinfo->getRealPath());
            }
        }
    }
}

Эта функция удаляет все файлы кеша старше 24 часов. Дальше привяжем её к WP-Cron.

Регистрация события WP-Cron

function wpdetect_schedule_cache_clear() {
    if (!wp_next_scheduled('wpdetect_clear_cache_hook')) {
        wp_schedule_event(time(), 'daily', 'wpdetect_clear_cache_hook');
    }
}
add_action('wp', 'wpdetect_schedule_cache_clear');

add_action('wpdetect_clear_cache_hook', 'wpdetect_clear_old_cache');

Теперь функция wpdetect_clear_old_cache будет запускаться ежедневно и удалять устаревший кеш.

Использование популярных плагинов для управления кешем

Если на сайте установлен плагин кеширования, лучше использовать его API для очистки, чтобы избежать проблем.

WP Super Cache

Для WP Super Cache очистка кеша в коде:

function wpdetect_wp_super_cache_clear() {
    if (function_exists('wp_cache_clear_cache')) {
        wp_cache_clear_cache();
    }
}

Эту функцию также можно повесить на WP-Cron, заменив wpdetect_clear_old_cache.

W3 Total Cache

Для W3 Total Cache очистка кеша:

function wpdetect_w3tc_clear_cache() {
    if (function_exists('w3tc_flush_all')) {
        w3tc_flush_all();
    }
}

WP Rocket

WP Rocket не предоставляет публичных функций очистки, но можно использовать WP-CLI команду:

wp rocket clean

Для автоматизации через PHP можно запускать shell-команды (если разрешено):

function wpdetect_wp_rocket_clear_cache() {
    if (function_exists('shell_exec')) {
        shell_exec('wp rocket clean');
    }
}

Автоматизация очистки кеша с помощью плагинов

Если вы не хотите писать код, можно воспользоваться плагинами, которые позволяют настроить автоматическую очистку кеша по расписанию или по определённым событиям:

Практические советы по управлению кешем

Для эффективной работы кеша и его очистки рекомендуем:

Пример расширенной функции автоматической очистки кеша с логированием

function wpdetect_clear_cache_with_log() {
    $log = [];
    $cache_dir = WP_CONTENT_DIR . '/cache/';
    if (!is_dir($cache_dir)) {
        $log[] = 'Папка кеша не найдена.';
        error_log(implode("\n", $log));
        return;
    }

    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($cache_dir, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::CHILD_FIRST
    );

    $now = time();
    $max_age = 86400; // 24 часа
    $deleted_files = 0;

    foreach ($files as $fileinfo) {
        if ($fileinfo->isFile()) {
            if ($now - $fileinfo->getMTime() > $max_age) {
                if (@unlink($fileinfo->getRealPath())) {
                    $deleted_files++;
                } else {
                    $log[] = 'Не удалось удалить: ' . $fileinfo->getRealPath();
                }
            }
        }
    }

    $log[] = 'Удалено файлов кеша: ' . $deleted_files;
    error_log(implode("\n", $log));
}

add_action('wpdetect_clear_cache_hook', 'wpdetect_clear_cache_with_log');

Логи будут записываться в файлы ошибок сервера, что поможет отследить успешность операции.

Заключение

Автоматизация удаления старого кеша в WordPress — важная задача для поддержания скорости и актуальности сайта. Используя WP-Cron, API плагинов кеширования и кастомные скрипты, вы можете настроить надежный механизм очистки, который не потребует вашего постоянного вмешательства. Если предпочитаете готовые решения, обратите внимание на плагин Clearfy Pro, который значительно упростит управление кешем и оптимизацию сайта в целом.

Диагностика и решение проблем с отображением изображений в WooCommerce
30.05.2026
Диагностика и решение проблем с отправкой писем через SMTP в WordPress
18.06.2026
Как автоматизировать удаление неиспользуемых attachment файлов в WordPress
11.04.2026
Диагностика и решение проблемы неотправки писем из WooCommerce через SMTP
27.05.2026
Как автоматизировать удаление старого кода в WordPress: практическое руководство
13.11.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше