Кеширование — одна из ключевых технологий, ускоряющих работу сайта на WordPress. Однако иногда нужно быстро очистить кеш, чтобы увидеть изменения или устранить проблемы с отображением. В этой статье разберём, как программисту добавить собственную настройку очистки кеша прямо в админке WordPress, чтобы управлять кешем без необходимости заходить в панели плагинов или очищать кеш вручную через FTP.
Почему важна настройка очистки кеша в админке WordPress
Большинство популярных плагинов кеширования, таких как WP Super Cache, W3 Total Cache или LiteSpeed Cache, предлагают свои кнопки для очистки кеша. Но иногда на сайте используется кастомное кеширование, или нужно добавить единый интерфейс для очистки кеша, который будет работать с несколькими механизмами одновременно.
Реализация собственной настройки очистки кеша в админке позволяет:
- Упростить работу администраторов и редакторов сайта.
- Объединить очистку кеша нескольких плагинов и систем в одном месте.
- Автоматизировать процесс очистки кеша при определённых действиях.
- Легко расширять функциональность для будущих нужд.
Добавляем меню и страницу настроек для очистки кеша в WordPress
Для начала создадим в админке отдельный раздел меню, где разместим кнопку очистки кеша. Это делается через хук admin_menu. В примере ниже функция wpma_add_cache_clear_menu добавляет пункт меню «Очистка кеша».
add_action('admin_menu', 'wpma_add_cache_clear_menu');
function wpma_add_cache_clear_menu() {
add_menu_page(
'Очистка кеша',
'Очистка кеша',
'manage_options',
'wpma-cache-clear',
'wpma_cache_clear_page',
'dashicons-update',
81
);
}
После этого нужно реализовать callback-функцию wpma_cache_clear_page, которая будет выводить страницу с кнопкой и обрабатывать её нажатие.
Обработка нажатия кнопки и очистка кеша
Чтобы кнопка работала, нужно сделать форму с методом POST и nonce для безопасности. При нажатии будем вызывать функции очистки кеша. В примере показана очистка кеша WP Super Cache и LiteSpeed Cache, а также кастомная функция очистки.
function wpma_cache_clear_page() {
if (!current_user_can('manage_options')) {
wp_die('Доступ запрещён');
}
if (isset($_POST['wpma_clear_cache']) && check_admin_referer('wpma_cache_clear_action', 'wpma_cache_clear_nonce')) {
$results = wpma_clear_all_caches();
echo '<div class="updated notice"><p>Кеш очищен: ' . esc_html($results) . '</p></div>';
}
echo '<h1>Очистка кеша</h1>';
echo '<form method="post">';
wp_nonce_field('wpma_cache_clear_action', 'wpma_cache_clear_nonce');
echo '<p><input type="submit" name="wpma_clear_cache" class="button button-primary" value="Очистить кеш" /></p>';
echo '</form>';
}
Реализация функции очистки кеша для разных плагинов
В функции wpma_clear_all_caches мы вызовем API популярных кеш-плагинов, если они активны, а также добавим свою очистку для кастомных кешей. Это пример того, как объединить несколько механизмов очистки кеша.
function wpma_clear_all_caches() {
$messages = [];
// Очистка WP Super Cache
if (function_exists('wp_cache_clear_cache')) {
wp_cache_clear_cache();
$messages[] = 'WP Super Cache очищен';
}
// Очистка LiteSpeed Cache
if (class_exists('LiteSpeed_Cache_API')) {
$lscache = new LiteSpeed_Cache_API();
$lscache->purge_all();
$messages[] = 'LiteSpeed Cache очищен';
}
// Пример кастомной очистки кеша, например, удаление transient
global $wpdb;
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE '_transient_wpma_%'");
$messages[] = 'Кастомные transient очищены';
return implode(', ', $messages);
}
Расширяем функционал: очистка кеша по расписанию и при сохранении записи
Можно добавить автоматическую очистку кеша при сохранении определённых типов записей или по расписанию через WP-Cron.
Очистка кеша при сохранении поста
Добавим хук save_post, чтобы очищать кеш при обновлении поста.
add_action('save_post', 'wpma_clear_cache_on_save_post');
function wpma_clear_cache_on_save_post($post_id) {
if (wp_is_post_revision($post_id)) {
return;
}
wpma_clear_all_caches();
}
Очистка кеша по расписанию
Создадим событие, которое будет очищать кеш например раз в час.
if (!wp_next_scheduled('wpma_hourly_cache_clear')) {
wp_schedule_event(time(), 'hourly', 'wpma_hourly_cache_clear');
}
add_action('wpma_hourly_cache_clear', 'wpma_clear_all_caches');
Вывод и рекомендации по использованию
Добавленная настройка очистки кеша в админке — удобный инструмент для быстрого управления кешем без необходимости заходить в настройки каждого плагина. Такой подход особенно полезен на крупных сайтах с несколькими уровнями кеширования.
При внедрении важно внимательно тестировать работу очистки кеша и учитывать специфику используемых плагинов, так как у каждого свои методы и API.
Если используете плагины из WPSHOP, например, Clearfy Pro, обратите внимание, что они тоже имеют собственные функции оптимизации и очистки кеша — можно интегрировать их вызовы в общий механизм очистки кеша.