Как создать плагин для автоматического очищения кеша WordPress

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

Почему важно автоматическое очищение кеша в WordPress

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

Автоматическое очищение кеша позволяет:

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

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

Обзор популярных кеш-плагинов и способов их очистки

Перед тем, как создавать плагин, нужно понять, с какими кеш-системами он будет работать.

W3 Total Cache

Этот плагин предоставляет функции API для очистки кеша. Вызов функции WPHOST_clear_w3_total_cache() в нашем плагине может использовать следующий код:

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

Данная функция сбрасывает весь кеш, включая страницы, объекты и базы данных.

WP Super Cache

У этого плагина есть функция wp_cache_clear_cache(), но она не всегда доступна. Вместо этого можно вызвать:

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

Или использовать вызов очистки через класс:

function WPHOST_clear_wp_super_cache() {
    if (class_exists('WP_Super_Cache')) {
        $wp_super_cache = new WP_Super_Cache();
        $wp_super_cache->clear_cache();
    }
}

LiteSpeed Cache

Для LiteSpeed Cache можно очистить кеш через REST API или WP CLI, но для примера возьмем вызов глобальной функции:

function WPHOST_clear_litespeed_cache() {
    if (function_exists('LiteSpeed_Cache_API')) {
        LiteSpeed_Cache_API::purge_all();
    }
}

Создаем базовый плагин для очистки кеша

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

Структура плагина

Создайте папку wphost-auto-cache-clear в директории wp-content/plugins. В ней создайте файл wphost-auto-cache-clear.php со следующим содержимым:

<?php
/**
 * Plugin Name: WPHOST Авто Очистка Кеша
 * Description: Автоматически очищает кеш при обновлении записи, изменении настроек и других событиях.
 * Version: 1.0
 * Author: WPHOST
 */

// Защита от прямого запуска
if (!defined('ABSPATH')) {
    exit;
}

// Очистка кеша для W3 Total Cache
function WPHOST_clear_w3_total_cache() {
    if (function_exists('w3tc_flush_all')) {
        w3tc_flush_all();
    }
}

// Очистка кеша для WP Super Cache
function WPHOST_clear_wp_super_cache() {
    if (function_exists('wp_cache_clear_cache')) {
        wp_cache_clear_cache();
    } elseif (class_exists('WP_Super_Cache')) {
        $wp_super_cache = new WP_Super_Cache();
        $wp_super_cache->clear_cache();
    }
}

// Основная функция очистки кеша
function WPHOST_clear_cache() {
    WPHOST_clear_w3_total_cache();
    WPHOST_clear_wp_super_cache();
    // Можно добавить другие методы очистки кеша по аналогии
}

// Хук на обновление записи
add_action('save_post', 'WPHOST_clear_cache');
// Хук на обновление настроек
add_action('update_option', 'WPHOST_clear_cache');
// Хук на удаление записи
add_action('delete_post', 'WPHOST_clear_cache');

// Дополнительно можно добавить очистку при активации или деактивации плагина
register_activation_hook(__FILE__, 'WPHOST_clear_cache');
register_deactivation_hook(__FILE__, 'WPHOST_clear_cache');
?>

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

Расширение функционала: очистка кеша по расписанию и через WP-CLI

Иногда полезно очищать кеш регулярно или вручную из консоли сервера.

Очистка кеша по расписанию с WP-Cron

Добавим в плагин периодическую задачу, которая будет очищать кеш, например, раз в 6 часов.

// Добавляем событие при активации плагина
function WPHOST_schedule_cache_clear() {
    if (!wp_next_scheduled('wphost_clear_cache_cron')) {
        wp_schedule_event(time(), 'six_hours', 'wphost_clear_cache_cron');
    }
}
register_activation_hook(__FILE__, 'WPHOST_schedule_cache_clear');

// Удаляем событие при деактивации
function WPHOST_unschedule_cache_clear() {
    wp_clear_scheduled_hook('wphost_clear_cache_cron');
}
register_deactivation_hook(__FILE__, 'WPHOST_unschedule_cache_clear');

// Регистрируем интервал 6 часов
add_filter('cron_schedules', function($schedules) {
    $schedules['six_hours'] = array(
        'interval' => 21600, // 6 часов в секундах
        'display' => 'Каждые 6 часов'
    );
    return $schedules;
});

// Обработчик события
add_action('wphost_clear_cache_cron', 'WPHOST_clear_cache');

Добавление команды WP-CLI для очистки кеша

WP-CLI — мощный инструмент для управления WordPress из командной строки. Добавим команду для очистки кеша из консоли.

if (defined('WP_CLI') && WP_CLI) {
    WP_CLI::add_command('wphost-clear-cache', function() {
        WPHOST_clear_cache();
        WP_CLI::success('Кеш успешно очищен.');
    });
}

Теперь команда wp wphost-clear-cache очистит кеш сайта.

Советы по тестированию и отладке плагина

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

  • Тестируйте плагин на тестовом сайте, чтобы избежать сбоев на живом проекте.
  • Проверяйте, с какими кеш-плагинами активен сайт, и адаптируйте функции очистки.
  • Используйте логи для отслеживания вызовов очистки, например, error_log('Cache cleared');.
  • Не забывайте о безопасности: функции должны запускаться только с нужными правами.

Заключение

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

Как избежать проблем с неработающими email-уведомлениями WooCommerce
08.05.2026
Как создать плагин для автоматического очищения кеша WordPress
25.11.2025
Как автоматизировать удаление ревизий записей в WordPress для оптимизации базы данных
29.01.2026
Как оптимизировать базу данных WordPress для быстрой работы сайта
18.11.2025
Как сделать отзывы с рейтингом в WordPress: практические способы
04.04.2026