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

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

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

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

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

Как управлять плагинами программно в WordPress

WordPress предоставляет функции для активации и деактивации плагинов в коде:

  • activate_plugin( $plugin ) — активирует плагин.
  • deactivate_plugins( $plugins ) — деактивирует один или несколько плагинов.

Аргументом для этих функций является путь к файлу плагина относительно каталога wp-content/plugins.

Для примера, чтобы отключить плагин Contact Form 7, нужно вызвать:

deactivate_plugins('contact-form-7/wp-contact-form-7.php');

Чтобы активировать —

activate_plugin('contact-form-7/wp-contact-form-7.php');

Но делать это напрямую в коде без расписания неудобно, поэтому используем WP-Cron для планирования задач.

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

WP-Cron — встроенный в WordPress механизм планирования событий. С его помощью можно запускать функции по расписанию.

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

function wpaddons_deactivate_plugin_scheduled() {
    if ( ! is_plugin_active('contact-form-7/wp-contact-form-7.php') ) {
        return;
    }
    deactivate_plugins('contact-form-7/wp-contact-form-7.php');
}

Теперь зарегистрируем событие, которое будет срабатывать, например, ежедневно в 23:00:

function wpaddons_schedule_plugin_deactivation() {
    if ( ! wp_next_scheduled('wpaddons_daily_plugin_deactivation') ) {
        wp_schedule_event(strtotime('23:00:00'), 'daily', 'wpaddons_daily_plugin_deactivation');
    }
}
add_action('wp', 'wpaddons_schedule_plugin_deactivation');

add_action('wpaddons_daily_plugin_deactivation', 'wpaddons_deactivate_plugin_scheduled');

Таким образом, каждый день в 23:00 будет отключаться Contact Form 7.

Для включения плагина по расписанию создадим аналогичную функцию:

function wpaddons_activate_plugin_scheduled() {
    if ( is_plugin_active('contact-form-7/wp-contact-form-7.php') ) {
        return;
    }
    activate_plugin('contact-form-7/wp-contact-form-7.php');
}

function wpaddons_schedule_plugin_activation() {
    if ( ! wp_next_scheduled('wpaddons_daily_plugin_activation') ) {
        wp_schedule_event(strtotime('06:00:00'), 'daily', 'wpaddons_daily_plugin_activation');
    }
}
add_action('wp', 'wpaddons_schedule_plugin_activation');

add_action('wpaddons_daily_plugin_activation', 'wpaddons_activate_plugin_scheduled');

Теперь плагин будет автоматически включаться каждый день в 06:00.

Создание более гибкого расписания с пользовательскими интервалами

Стандартные интервалы WP-Cron ограничены (раз в час, день и т.д.). Чтобы задать произвольные интервалы, можно добавить их через фильтр:

function wpaddons_custom_cron_intervals( $schedules ) {
    $schedules['every_five_minutes'] = array(
        'interval' => 300, // 300 секунд = 5 минут
        'display'  => __( 'Каждые 5 минут', 'wpaddons' )
    );
    return $schedules;
}
add_filter( 'cron_schedules', 'wpaddons_custom_cron_intervals' );

Затем использовать такой интервал при планировании:

wp_schedule_event( time(), 'every_five_minutes', 'wpaddons_custom_event_hook' );

Так можно гибко настраивать частоту проверки и включения/отключения плагинов по нужному расписанию.

Использование плагинов для управления активацией плагинов по расписанию

Если хочется избежать программирования, можно использовать плагины, которые расширяют возможности WP-Cron и управления плагинами:

  • Plugin Organizer — позволяет включать и отключать плагины на страницах, но не по расписанию;
  • WP Crontrol — расширенный менеджер WP-Cron, даёт возможность создавать и управлять задачами;
  • Advanced Cron Manager — удобный интерфейс для управления событиями WP-Cron.

Для автоматизации включения/отключения плагинов по расписанию можно комбинировать эти инструменты с собственными PHP-скриптами.

Практический пример: расписание для плагина Clearfy Pro с wpaddons

Допустим, вы используете плагин Clearfy Pro, который нужен только в рабочее время — с 9:00 до 18:00. Вот пример кода, который будет включать Clearfy Pro в 9 утра и отключать в 18 вечера:

function wpaddons_activate_clearfy() {
    if ( ! is_plugin_active('clearfy-pro/clearfy-pro.php') ) {
        activate_plugin('clearfy-pro/clearfy-pro.php');
    }
}

function wpaddons_deactivate_clearfy() {
    if ( is_plugin_active('clearfy-pro/clearfy-pro.php') ) {
        deactivate_plugins('clearfy-pro/clearfy-pro.php');
    }
}

// Планируем активацию в 9:00
if ( ! wp_next_scheduled('wpaddons_activate_clearfy_hook') ) {
    wp_schedule_event(strtotime('09:00:00'), 'daily', 'wpaddons_activate_clearfy_hook');
}
add_action('wpaddons_activate_clearfy_hook', 'wpaddons_activate_clearfy');

// Планируем деактивацию в 18:00
if ( ! wp_next_scheduled('wpaddons_deactivate_clearfy_hook') ) {
    wp_schedule_event(strtotime('18:00:00'), 'daily', 'wpaddons_deactivate_clearfy_hook');
}
add_action('wpaddons_deactivate_clearfy_hook', 'wpaddons_deactivate_clearfy');

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

Важные нюансы и рекомендации

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

2. При активации и деактивации плагинов могут возникать ошибки, если плагины зависят друг от друга. Следите за логами и тестируйте на тестовом сервере.

3. Используйте функции is_plugin_active() из WordPress, чтобы избежать повторной активации или деактивации.

4. Если нужно отключать плагины не полностью, а лишь на определённых страницах, рассмотрите плагин Expert Review или аналогичные инструменты.

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

WooCommerce: автоматическое изменение стоимости товаров при изменении условий в корзине
28.05.2026
Как автоматически удалять неиспользуемые CSS и JS в WordPress
08.03.2026
Как создать nestable меню в WordPress: плагины и пример кода
11.11.2025
WooCommerce: Автоматическое изменение стоимости товаров с точной границей и проверкой условий
18.05.2026
Автоматическое создание и удаление черновиков WordPress по расписанию
28.01.2026