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

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

Зачем нужна автоматизация удаления кеша в WordPress

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

Автоматизация удаления кеша позволяет:

Рассмотрим, как можно реализовать такую автоматизацию.

Автоматическое удаление кеша с помощью популярных плагинов WordPress

Плагин W3 Total Cache

Один из самых популярных кеширующих плагинов. Позволяет настроить автоматическую очистку кеша по расписанию, например, ежедневно или еженедельно.

Для включения автоматической очистки:

  1. Перейдите в Performance > Page Cache.
  2. В разделе Cache Preload установите расписание обновления кеша.
  3. В разделе Empty Cache настройте автоматическую очистку устаревшего кеша.

Плагин WP Super Cache

Этот плагин также позволяет настроить автоматическую очистку кеша через интерфейс в разделе Advanced > Expiry Time & Garbage Collection. Можно указать время жизни кеша и периодичность очистки.

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

Автоматизация удаления кеша с помощью WP-Cron и собственного кода

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

Регистрация задачи очистки кеша

Добавим в файл functions.php вашей темы или в собственный плагин следующий код:

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

Этот код регистрирует ежедневное событие wpdetect_cache_cleanup_event.

Обработчик события очистки кеша

Создадим функцию, которая будет запускаться при срабатывании WP-Cron задачи:

function wpdetect_handle_cache_cleanup() {
    // Пример удаления кеш-файлов из папки wp-content/cache/
    $cache_dir = WP_CONTENT_DIR . '/cache/';
    if (!is_dir($cache_dir)) {
        return;
    }
    $files = glob($cache_dir . '*');
    $now = time();
    $max_age = 24 * 60 * 60; // 24 часа
    foreach ($files as $file) {
        if (is_file($file)) {
            if ($now - filemtime($file) > $max_age) {
                unlink($file);
            }
        } elseif (is_dir($file)) {
            // Рекурсивное удаление старых файлов в папках
            wpdetect_recursive_cache_cleanup($file, $max_age, $now);
        }
    }
}
add_action('wpdetect_cache_cleanup_event', 'wpdetect_handle_cache_cleanup');

function wpdetect_recursive_cache_cleanup($dir, $max_age, $now) {
    $items = glob($dir . '/*');
    foreach ($items as $item) {
        if (is_file($item)) {
            if ($now - filemtime($item) > $max_age) {
                unlink($item);
            }
        } elseif (is_dir($item)) {
            wpdetect_recursive_cache_cleanup($item, $max_age, $now);
            // После очистки поддиректорий, пытаемся удалить пустую папку
            @rmdir($item);
        }
    }
    @rmdir($dir);
}

Этот код удаляет все кеш-файлы старше 24 часов из папки wp-content/cache/ и рекурсивно очищает вложенные папки.

Отмена задачи по необходимости

Для удаления задачи используйте следующий код (например, при деактивации плагина):

function wpdetect_remove_cache_cleanup_schedule() {
    $timestamp = wp_next_scheduled('wpdetect_cache_cleanup_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpdetect_cache_cleanup_event');
    }
}

Очистка кеша объектов и транзиентов через код

Кроме файлового кеша, WordPress активно использует кеш объектов и транзиенты. Их тоже важно очищать своевременно.

Удаление всех транзиентов

Транзиенты — данные с ограниченным сроком хранения в базе данных или в памяти. Вот простой способ удалить все транзиенты:

function wpdetect_delete_all_transients() {
    global $wpdb;
    $transients = $wpdb->get_col("SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_%'");
    foreach ($transients as $transient) {
        $key = str_replace('_transient_', '', $transient);
        delete_transient($key);
    }
}

Вы можете запускать эту функцию по расписанию через WP-Cron, аналогично удалению кеш-файлов.

Очистка кеша объекта

Для очистки кеша объекта используйте:

wp_cache_flush();

Подобную команду также можно вызывать в рамках автоматической задачи.

Пример комплексного решения: плагин для автоматической очистки кеша

Ниже пример минимального плагина, который ежедневно удаляет кеш-файлы старше 24 часов и очищает транзиенты:

<?php
/**
 * Plugin Name: WPDetect Auto Cache Cleaner
 * Description: Автоматическая очистка старого кеша в WordPress.
 * Version: 1.0
 * Author: WPDetect
 */

register_activation_hook(__FILE__, 'wpdetect_schedule_cache_cleanup');
register_deactivation_hook(__FILE__, 'wpdetect_remove_cache_cleanup_schedule');

function wpdetect_schedule_cache_cleanup() {
    if (!wp_next_scheduled('wpdetect_cache_cleanup_event')) {
        wp_schedule_event(time(), 'daily', 'wpdetect_cache_cleanup_event');
    }
}

function wpdetect_remove_cache_cleanup_schedule() {
    $timestamp = wp_next_scheduled('wpdetect_cache_cleanup_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpdetect_cache_cleanup_event');
    }
}

add_action('wpdetect_cache_cleanup_event', 'wpdetect_handle_cache_cleanup');

function wpdetect_handle_cache_cleanup() {
    // Удаление кеш-файлов
    $cache_dir = WP_CONTENT_DIR . '/cache/';
    if (is_dir($cache_dir)) {
        $files = glob($cache_dir . '*');
        $now = time();
        $max_age = 24 * 60 * 60;
        foreach ($files as $file) {
            if (is_file($file) && $now - filemtime($file) > $max_age) {
                unlink($file);
            } elseif (is_dir($file)) {
                wpdetect_recursive_cache_cleanup($file, $max_age, $now);
            }
        }
    }
    // Очистка транзиентов
    global $wpdb;
    $transients = $wpdb->get_col("SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_%'");
    foreach ($transients as $transient) {
        $key = str_replace('_transient_', '', $transient);
        delete_transient($key);
    }
    // Очистка кеша объекта
    wp_cache_flush();
}

function wpdetect_recursive_cache_cleanup($dir, $max_age, $now) {
    $items = glob($dir . '/*');
    foreach ($items as $item) {
        if (is_file($item)) {
            if ($now - filemtime($item) > $max_age) {
                unlink($item);
            }
        } elseif (is_dir($item)) {
            wpdetect_recursive_cache_cleanup($item, $max_age, $now);
            @rmdir($item);
        }
    }
    @rmdir($dir);
}
?>

Советы по оптимизации работы с кешем в WordPress

Кроме автоматической очистки, рекомендуется:

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

Обслуживание REST API WordPress — практические советы и примеры кода
29.11.2025
Как автоматизировать управление transient в WordPress: практическое руководство
26.12.2025
Как удалить неиспользуемые мета-поля в WordPress: практическое руководство
13.01.2026
Оптимизация бесплатных SSL-ссылок для WordPress: решаем проблему с безопасностью и SEO
20.05.2025
Автоматическое отключение неиспользуемых плагинов в WordPress: практическое руководство
20.12.2025
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее