Автоматическое отключение плагинов по расписанию в WordPress

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

Почему важно управлять плагинами по расписанию

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

  • Повышать производительность в часы пик, отключая ресурсоёмкие плагины.
  • Автоматически выключать плагины для технических работ без ручного вмешательства.
  • Управлять функциональностью сайта в зависимости от времени суток или дня недели.

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

Как WordPress хранит и активирует плагины

Статус активных плагинов хранится в опции active_plugins базы данных WordPress. Это массив с путями к плагинам относительно папки wp-content/plugins. Чтобы отключить плагин, нужно удалить его из этого массива, чтобы включить — добавить обратно.

Зная это, мы можем программно менять список активных плагинов, реализуя расписание.

Реализация автоматического отключения и включения плагинов с помощью WP-Cron

Настройка задач WP-Cron

WordPress имеет встроенный планировщик задач — WP-Cron. Он позволяет запускать функции в определённое время. Для нашего сценария создадим две задачи: одна отключает плагин, другая — включает.

Пример кода для файла плагина или functions.php темы

<?php
// Функция для отключения плагина
function wpcodex_deactivate_plugin_scheduled($plugin) {
    $active_plugins = get_option('active_plugins');
    if (($key = array_search($plugin, $active_plugins)) !== false) {
        unset($active_plugins[$key]);
        update_option('active_plugins', $active_plugins);
    }
}

// Функция для включения плагина
function wpcodex_activate_plugin_scheduled($plugin) {
    $active_plugins = get_option('active_plugins');
    if (!in_array($plugin, $active_plugins)) {
        $active_plugins[] = $plugin;
        update_option('active_plugins', $active_plugins);
    }
}

// Добавление задач в WP-Cron
function wpcodex_schedule_plugin_toggle() {
    if (!wp_next_scheduled('wpcodex_deactivate_plugin_event')) {
        // Отключить плагин в 2 часа ночи
        wp_schedule_event(strtotime('02:00:00'), 'daily', 'wpcodex_deactivate_plugin_event');
    }
    if (!wp_next_scheduled('wpcodex_activate_plugin_event')) {
        // Включить плагин в 6 утра
        wp_schedule_event(strtotime('06:00:00'), 'daily', 'wpcodex_activate_plugin_event');
    }
}
add_action('wp', 'wpcodex_schedule_plugin_toggle');

// Обработчики событий
add_action('wpcodex_deactivate_plugin_event', function() {
    wpcodex_deactivate_plugin_scheduled('example-plugin/example-plugin.php'); // Замените на путь вашего плагина
});

add_action('wpcodex_activate_plugin_event', function() {
    wpcodex_activate_plugin_scheduled('example-plugin/example-plugin.php'); // Замените на путь вашего плагина
});

// Очистка при деактивации плагина (если код в плагине)
function wpcodex_clear_schedules() {
    wp_clear_scheduled_hook('wpcodex_deactivate_plugin_event');
    wp_clear_scheduled_hook('wpcodex_activate_plugin_event');
}
register_deactivation_hook(__FILE__, 'wpcodex_clear_schedules');
?>

В этом примере плагин с файлом example-plugin/example-plugin.php будет отключаться каждую ночь в 2:00 и включаться в 6:00 утра.

Настройка расписания и отладка

WP-Cron зависит от посещений сайта, поэтому для точности запуска лучше настроить системный cron на сервере, вызывающий wp-cron.php регулярно. Это повысит надёжность.

Для изменения времени запуска достаточно подкорректировать strtotime() в коде. Можно расширить функционал, добавив опции в админку для управления расписанием.

Альтернативы: плагины для планирования включения и отключения

Если вы не хотите писать код, можно использовать готовые решения, например:

  • Plugin Toggle — простой плагин для ручного включения/отключения.
  • Clearfy Pro — предлагает расширенные инструменты оптимизации, включая управление плагинами.

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

Расширение функционала: отключение нескольких плагинов и условия

Если нужно управлять несколькими плагинами, можно передавать массив с путями и обрабатывать их циклом:

function wpcodex_deactivate_plugins_scheduled($plugins) {
    $active_plugins = get_option('active_plugins');
    foreach ($plugins as $plugin) {
        if (($key = array_search($plugin, $active_plugins)) !== false) {
            unset($active_plugins[$key]);
        }
    }
    update_option('active_plugins', $active_plugins);
}

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

Заключение

Автоматическое отключение и включение плагинов по расписанию — мощный инструмент для оптимизации и управления WordPress-сайтом. Используя WP-Cron и прямую работу с опцией active_plugins, можно гибко настроить работу плагинов без лишних ручных действий.

Если вы ищете готовые решения для оптимизации сайта, рекомендуем обратить внимание на Clearfy Pro — это плагин с большим набором функций для управления и ускорения WordPress.

Как автоматически отправлять отзывы WordPress на email с примером кода
20.03.2026
Как удалить пустые мета данные в WordPress для оптимизации базы данных
17.03.2026
Автоматический экспорт постов в XML в WordPress: практическое руководство
31.12.2025
Как настроить автоматический редирект в WordPress при изменении URL
18.02.2026
Как удалить ревизии постов в WordPress для очистки базы данных
11.12.2025