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

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

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

Автоматическое включение и отключение плагинов позволяет:

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

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

Основные функции для включения и отключения плагинов

WordPress хранит список активных плагинов в опции active_plugins. Управлять этим списком можно программно. Вот два основных подхода:

1. Использование функции update_option для изменения списка активных плагинов

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

function wprobot_deactivate_plugin($plugin_path) {
    $active_plugins = get_option('active_plugins');
    if(($key = array_search($plugin_path, $active_plugins)) !== false) {
        unset($active_plugins[$key]);
        update_option('active_plugins', $active_plugins);
    }
}

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

function wprobot_activate_plugin($plugin_path) {
    $active_plugins = get_option('active_plugins');
    if(!in_array($plugin_path, $active_plugins)) {
        $active_plugins[] = $plugin_path;
        update_option('active_plugins', $active_plugins);
    }
}

Важно: $plugin_path — это относительный путь к основному файлу плагина от папки wp-content/plugins/, например: akismet/akismet.php.

2. Использование функций из WP-CLI или wp-admin/includes/plugin.php

WordPress содержит функции activate_plugin() и deactivate_plugins(), которые выполняют дополнительные проверки и хуки:

require_once ABSPATH . 'wp-admin/includes/plugin.php';

// Отключить
wprobot_deactivate_plugins('akismet/akismet.php');

// Включить
wprobot_activate_plugin('akismet/akismet.php');

Эти функции предпочтительнее, так как корректно вызывают хуки activate_ и deactivate_, а также обновляют статус плагина.

Примеры автоматического управления плагинами по расписанию с WP-Cron

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

Регистрация событий и хук для отключения плагина

function wprobot_schedule_plugin_toggle() {
    if (!wp_next_scheduled('wprobot_deactivate_plugin_event')) {
        wp_schedule_event(strtotime('23:00:00'), 'daily', 'wprobot_deactivate_plugin_event');
    }
    if (!wp_next_scheduled('wprobot_activate_plugin_event')) {
        wp_schedule_event(strtotime('07:00:00'), 'daily', 'wprobot_activate_plugin_event');
    }
}
add_action('wp', 'wprobot_schedule_plugin_toggle');

Обработчики событий

add_action('wprobot_deactivate_plugin_event', function() {
    wprobot_deactivate_plugin('akismet/akismet.php');
});

add_action('wprobot_activate_plugin_event', function() {
    wprobot_activate_plugin('akismet/akismet.php');
});

Таким образом плагин Akismet будет автоматически отключаться в 23:00 и включаться в 7:00.

Управление плагинами на основе условий внутри темы или плагина

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

function wprobot_conditional_plugin_deactivation() {
    if (is_page('checkout')) {
        wprobot_deactivate_plugin('wp-super-cache/wp-cache.php');
    } else {
        wprobot_activate_plugin('wp-super-cache/wp-cache.php');
    }
}
add_action('wp', 'wprobot_conditional_plugin_deactivation');

Минус такого подхода — плагин всё равно будет загружаться на уровне PHP, но без активации он не выполняет своих функций.

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

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

  • Deactivation Scheduler — отключение и включение плагинов по расписанию.
  • Plugin Organizer — управление активацией плагинов на страницах.

Эти инструменты пригодятся, если не хотите писать код самостоятельно, но в рамках автоматизации с помощью WP Robot или других инструментов можно интегрировать их вызовы.

Как избежать проблем при автоматическом управлении плагинами

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

  • Всегда тестируйте код на тестовом сайте — отключение критичных плагинов может сломать сайт.
  • Используйте функции WordPress для активации и деактивации, чтобы запускались все хуки.
  • Учитывайте, что отключённый плагин не выполняет свои функции, но его файлы всё равно могут загружаться, если он подключён в теме или другом плагине.
  • Если используете WP-Cron на сайте с малым трафиком, планировщик может работать не точно, лучше использовать системные cron задачи.
Как автоматизировать создание и управление вариантами выбора в WordPress
24.03.2026
Как автоматически создавать посты с изображениями в WordPress
26.02.2026
Как создать автоматический импорт продуктов в WordPress с помощью WP All Import
25.12.2025
Как автоматически отключить и включить плагин в WordPress с помощью кода
27.03.2026
Автоматическое изменение цен и наличия товаров WooCommerce через Webhook с примером кода
10.05.2026