Как создать виджет очистки кеша Redis в WordPress

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

В этой статье мы разберём, как создать собственный виджет в WordPress, который позволит администратору сайта в пару кликов очистить кеш Redis. Такой инструмент особенно полезен, если вы не хотите заходить в консоль сервера или использовать сторонние плагины с избыточным функционалом.

Почему важно иметь виджет для очистки кеша Redis в WordPress

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

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

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

Подготовка: подключение к Redis из WordPress

Для работы с Redis из PHP мы будем использовать расширение phpredis или библиотеку Predis. В примерах ниже будет использован класс Redis из расширения phpredis, так как он быстрее и чаще встречается на хостингах.

Убедитесь, что Redis установлен и запущен на вашем сервере, а также что у вас есть доступ к нему с нужными правами.

Подключение к Redis в рамках плагина или темы:

function wpdevelop_redis_connect() {
    $redis = new Redis();
    try {
        $redis->connect('127.0.0.1', 6379); // укажите свои хост и порт
    } catch (Exception $e) {
        error_log('Redis connection failed: ' . $e->getMessage());
        return false;
    }
    return $redis;
}

Создание виджета очистки кеша Redis в админ-панели WordPress

Для добавления виджета в панель администратора используем функцию wp_add_dashboard_widget. Наш виджет будет содержать кнопку, при нажатии на которую будет выполняться очистка кеша.

Основные шаги:

  1. Создать функцию для очистки кеша.
  2. Добавить виджет на дашборд WordPress.
  3. Обработать AJAX-запрос от кнопки.
  4. Добавить безопасность через nonce.

Шаг 1: Функция очистки кеша Redis

function wpdevelop_redis_flush_cache() {
    $redis = wpdevelop_redis_connect();
    if (!$redis) {
        return new WP_Error('redis_connect_error', 'Не удалось подключиться к Redis');
    }
    // Очистка всех ключей в Redis
    $result = $redis->flushAll();
    return $result;
}

Шаг 2: Добавление виджета на панель администратора

function wpdevelop_add_redis_flush_widget() {
    wp_add_dashboard_widget(
        'wpdevelop_redis_flush',
        'Очистка кеша Redis',
        'wpdevelop_redis_flush_widget_render'
    );
}
add_action('wp_dashboard_setup', 'wpdevelop_add_redis_flush_widget');

Шаг 3: Отрисовка виджета и обработка кнопки

Виджет будет содержать кнопку, которая отправляет AJAX-запрос для очистки кеша.

function wpdevelop_redis_flush_widget_render() {
    // Создаём nonce для безопасности
    $nonce = wp_create_nonce('wpdevelop_redis_flush_nonce');
    echo '<button id="wpdevelop-redis-flush-button" class="button button-primary">Очистить кеш Redis</button>';
    echo "<span id='wpdevelop-redis-flush-result' style='margin-left:10px;'></span>";
    // Добавляем JS для AJAX
    ?>
    <script type="text/javascript">
    (function($){
        $('#wpdevelop-redis-flush-button').on('click', function(e){
            e.preventDefault();
            var button = $(this);
            var resultSpan = $('#wpdevelop-redis-flush-result');
            button.prop('disabled', true);
            resultSpan.text('Идёт очистка...');
            $.post(ajaxurl, {
                action: 'wpdevelop_redis_flush',
                nonce: '<?php echo $nonce; ?>'
            }, function(response){
                if(response.success) {
                    resultSpan.text('Кеш успешно очищен');
                } else {
                    resultSpan.text('Ошибка: ' + response.data);
                }
                button.prop('disabled', false);
            });
        });
    })(jQuery);
    </script>
    <?php
}

Шаг 4: Обработка AJAX-запроса в PHP

function wpdevelop_handle_redis_flush() {
    check_ajax_referer('wpdevelop_redis_flush_nonce', 'nonce');
    $result = wpdevelop_redis_flush_cache();
    if (is_wp_error($result)) {
        wp_send_json_error($result->get_error_message());
    } elseif ($result) {
        wp_send_json_success();
    } else {
        wp_send_json_error('Неизвестная ошибка при очистке кеша');
    }
}
add_action('wp_ajax_wpdevelop_redis_flush', 'wpdevelop_handle_redis_flush');

Безопасность и рекомендации по использованию

При работе с Redis важно учитывать безопасность:

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

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

Альтернативы и готовые решения

Если вы предпочитаете готовые плагины, обратите внимание на Clearfy Pro. В нём есть расширенные возможности по управлению кешем и оптимизации сайта.

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

Выводы

Создание виджета для очистки кеша Redis в WordPress — задача, которую можно решить с минимальным количеством кода и без сторонних плагинов. Это улучшит ваш рабочий процесс и повысит стабильность отображения актуальных данных на сайте. Используйте приведённые примеры как основу для своих проектов и не забывайте про безопасность.

Как использовать хуки для изменения функциональности WordPress
15.04.2026
Как создать автоматический импорт данных из Excel в WordPress
19.03.2026
Как создать настройку плагина в WordPress: подробное руководство для разработчиков
28.11.2025
Как добавить динамические атрибуты data в WordPress шорткод
02.04.2026
Как создать автоматический импорт товаров в WooCommerce из JSON файла
23.12.2025