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

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

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

Пошаговое решение: создание cron-задачи для отключения неактивных плагинов

1. Определяем критерии неактивности

Обычно под «неактивным» плагином понимают тот, который не используется (уже отключён) или не обновлялся длительное время. Для автоматического отключения имеет смысл сконцентрироваться на плагинах, которые установлены, но активны, но давно не использовались, либо на тех, что активны, но по каким-то причинам нужно отключать по расписанию.

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

WordPress хранит список активных плагинов в опции active_plugins. Чтобы отключить плагин, нужно удалить его из этого массива и обновить опцию.

function wp_disable_plugins_by_list($plugins_to_disable) {
    $active_plugins = get_option('active_plugins', []);
    $updated_plugins = array_diff($active_plugins, $plugins_to_disable);
    if (count($updated_plugins) !== count($active_plugins)) {
        update_option('active_plugins', $updated_plugins);
    }
}

3. Подключаем функцию к cron-событию

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

add_action('wp_disable_plugins_event', 'wp_disable_plugins_scheduled_task');

function wp_disable_plugins_scheduled_task() {
    // Укажите плагины, которые нужно отключить автоматически
    $plugins_to_disable = [
        'example-plugin/example-plugin.php',
        'another-plugin/another-plugin.php',
    ];
    wp_disable_plugins_by_list($plugins_to_disable);
}

// Регистрируем cron-событие при активации темы или плагина
function wp_schedule_disable_plugins_event() {
    if (!wp_next_scheduled('wp_disable_plugins_event')) {
        wp_schedule_event(time(), 'daily', 'wp_disable_plugins_event');
    }
}
add_action('wp', 'wp_schedule_disable_plugins_event');

4. Убираем cron-событие при деактивации темы или плагина

function wp_clear_disable_plugins_event() {
    $timestamp = wp_next_scheduled('wp_disable_plugins_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wp_disable_plugins_event');
    }
}
register_deactivation_hook(__FILE__, 'wp_clear_disable_plugins_event');

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

Чтобы убедиться, что плагины отключаются по расписанию:

  • Запустите cron вручную через WP-CLI: wp cron event run wp_disable_plugins_event
  • Проверьте опцию active_plugins в базе данных (таблица wp_options) или с помощью функции get_option('active_plugins').
  • Убедитесь, что перечисленные плагины исчезли из списка активных в админке WordPress.

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

  • Плагины не отключаются: Проверьте, правильно ли указаны пути к плагинам в массиве $plugins_to_disable. Используйте точный путь из папки wp-content/plugins, например plugin-folder/plugin-file.php.
  • Cron-событие не создается: Убедитесь, что функция wp_schedule_event вызывается в правильный момент (например, на хук wp или при активации плагина/темы). Проверьте, что сервер поддерживает WP-Cron и что он запускается.
  • Ошибка при обновлении опции: Проверьте, что нет конфликтов с другими плагинами, которые могут изменять активные плагины одновременно. Запускайте функцию отключения вне критических операций.

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

  • Не отключайте системные или критически важные плагины без тщательной проверки, чтобы не сломать сайт.
  • Запускайте cron-задачи в моменты минимальной нагрузки на сервер.
  • Используйте WP-CLI для ручного управления и диагностики cron-событий.
  • Храните список отключаемых плагинов в отдельной настройке или конфигурационном файле, чтобы легко обновлять без правки кода.

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

МетодПреимуществаНедостатки
Ручное отключение в админкеПростота, визуальный контрольТрудоемко, не автоматизировано
Использование WP-Cron и кода для автоотключенияАвтоматизация, гибкость, масштабируемостьТребует навыков программирования, настройка cron
Плагины для управления плагинамиУдобный интерфейс, дополнительные функцииДополнительная нагрузка, зависимости
Оптимизация маркетинговых форм в WordPress для повышения конверсии
25.12.2025
Как создать настройку темы WordPress своими руками
22.11.2025
Как создать динамический маркетинговый список клиентов в WordPress с помощью AJAX
21.01.2026
Как использовать хуки WooCommerce для кастомизации поля оплаты
14.05.2026
Как создать динамическую страницу продуктов в WordPress с AJAX
02.04.2026