Как автоматически отключать неиспользуемые плагины в WordPress по расписанию

Диагностика проблемы: зачем отключать плагины автоматически

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

Как определить неиспользуемые плагины

Для начала нужно понять, какие плагины действительно неактивны и не нужны. В WordPress плагин считается активным, если он включён в админке. Но бывают случаи, когда плагин активно используется на сайте, но отключён в админке, например, для тестирования.

Практический способ выявления:

  • Проверьте список активных плагинов через get_option('active_plugins');
  • Используйте логи активности (если ведутся) для понимания, когда последний раз плагин вызывался;
  • Оцените, влияет ли плагин на фронтенд и бэкенд.

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

1. Создаём функцию для деактивации плагина

function deactivate_plugin_by_path($plugin_path) {
    if (is_plugin_active($plugin_path)) {
        deactivate_plugins($plugin_path);
        error_log('Плагин "' . $plugin_path . '" деактивирован автоматически.');
    }
}

2. Добавляем CRON-задачу WordPress для периодической проверки

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

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

add_action('auto_deactivate_plugins_hook', 'auto_deactivate_unused_plugins');

function auto_deactivate_unused_plugins() {
    $plugins_to_check = array(
        'plugin-folder/plugin-file.php', // замените на реальные пути
        'another-plugin/another-file.php'
    );

    foreach ($plugins_to_check as $plugin) {
        // Здесь можно добавить любую логику проверки использования, например, дату последнего вызова
        // Для примера просто отключаем
        deactivate_plugin_by_path($plugin);
    }
}

3. Определяем логику определения неиспользуемости

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

function update_plugin_usage_timestamp($plugin_path) {
    update_option('last_used_' . md5($plugin_path), time());
}

function is_plugin_unused($plugin_path, $days = 30) {
    $last_used = get_option('last_used_' . md5($plugin_path), 0);
    return (time() - $last_used) > ($days * DAY_IN_SECONDS);
}

4. Интеграция с существующими плагинами для отслеживания

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

Проверка результата после внедрения

  • Проверьте, что CRON-задача запланирована с помощью WP-CLI: wp cron event list;
  • Проверьте логи сервера или debug.log на наличие сообщений о деактивациях;
  • В админке WordPress убедитесь, что нужные плагины отключены;
  • Проверьте работу сайта на предмет ошибок или недостающего функционала.

Частые ошибки и как их исправить

  • Плагины отключаются слишком рано или без проверки использования. Решение: улучшите логику проверки, добавьте более точные критерии;
  • WP-Cron не срабатывает из-за низкой посещаемости сайта. Решение: настройте системный cron на вызов wp cron event run --due-now;
  • Ошибка пути плагина в массиве $plugins_to_check. Проверьте точное имя папки и файла плагина в wp-content/plugins;
  • Деактивация нарушает работу сайта. Решение: тестируйте на staging-среде, добавьте уведомления перед отключением.

Практические советы для безопасности и производительности

  • Перед автоматической деактивацией плагина создавайте резервную копию базы данных;
  • Оповещайте администраторов через email или лог о каждом отключении плагина;
  • Регулярно проверяйте список отключённых плагинов, чтобы не потерять критичный функционал;
  • Используйте WP-CLI для управления плагинами на больших сайтах — быстрее и надёжнее;
  • Если плагин редко используется, рассмотрите возможность его замены на более лёгкий или интеграцию функционала напрямую в тему.

Сравнение подходов отключения плагинов

МетодПлюсыМинусы
Ручное отключениеПростота, полный контрольТрудозатратно, риск забытия
Автоматизация через WP-Cron (код)Автоматизация, гибкость, нет сторонних зависимостейНужна точная логика, возможны ошибки при неправильной конфигурации
Использование сторонних плагинов для управленияГотовые решения, часто с интерфейсомНагрузка на сайт, возможные конфликты, зависимость от обновлений
Как использовать хук pre_get_posts для отображения категорий в WooCommerce
26.05.2026
Как разрешить доступ к файлам WordPress через .htaccess: практическое руководство
02.01.2026
Как изменить URL авторской страницы в WordPress без плагинов
07.02.2026
Как автоматизировать удаление старого контента в WordPress
14.03.2026
Как удалить все комментарии на WordPress с помощью кода
23.12.2025