Как добавить временную активацию плагинов WordPress для тестирования

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

Почему нужна временная активация плагинов?

Временная активация полезна в нескольких случаях:

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

Реализация такой функции позволяет сэкономить время и снизить риски при работе с большим количеством плагинов.

Общий принцип реализации временной активации плагина

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

Для этого понадобится:

  1. Добавить при активации плагина запись с временем деактивации.
  2. Создать функцию, которая проверяет эту дату и отключает плагин, если срок истёк.
  3. Подключить эту функцию к хукам WordPress, чтобы проверка происходила при каждом запросе (или по расписанию).

Пример кода: временная активация плагина на 24 часа

Рассмотрим, как реализовать описанную логику на примере собственного плагина. В этом примере плагин активируется и автоматически отключается через 24 часа.

<?php
/**
 * Plugin Name: WPCourse Temporary Activation
 * Description: Плагин с временной активацией на 24 часа
 * Version: 1.0
 * Author: WPCourse
 */

// Время жизни активации в секундах (24 часа)
define('WPCOURSE_TEMP_ACTIVATION_LIFETIME', 24 * 60 * 60);

// Сохраняем время активации с датой отключения
function wpcourse_temp_activation_activate() {
    $deactivation_time = time() + WPCOURSE_TEMP_ACTIVATION_LIFETIME;
    update_option('wpcourse_temp_activation_deactivation_time', $deactivation_time);
}
register_activation_hook(__FILE__, 'wpcourse_temp_activation_activate');

// Проверяем время деактивации и отключаем плагин если срок истёк
function wpcourse_temp_activation_check() {
    $deactivation_time = get_option('wpcourse_temp_activation_deactivation_time');
    if ($deactivation_time && time() > $deactivation_time) {
        // Отключаем плагин
        deactivate_plugins(plugin_basename(__FILE__));
        // Убираем опцию, чтобы не отключать повторно
        delete_option('wpcourse_temp_activation_deactivation_time');
        // Можно добавить лог или уведомление администратора
        error_log('WPCourse Temporary Activation: плагин автоматически деактивирован по истечении срока.');
    }
}
add_action('plugins_loaded', 'wpcourse_temp_activation_check');

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

Приведённый выше пример показывает принцип работы на собственном плагине. Но как сделать временную активацию для сторонних плагинов? Есть несколько вариантов:

1. Создать отдельный плагин-менеджер

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

function wpcourse_temp_manager_check_plugins() {
    $plugins = get_option('wpcourse_temp_manager_plugins', []);
    $changed = false;
    foreach ($plugins as $plugin_file => $timestamp) {
        if (time() > $timestamp) {
            if (is_plugin_active($plugin_file)) {
                deactivate_plugins($plugin_file);
                error_log('WPCourse Temporary Manager: отключён плагин ' . $plugin_file);
            }
            unset($plugins[$plugin_file]);
            $changed = true;
        }
    }
    if ($changed) {
        update_option('wpcourse_temp_manager_plugins', $plugins);
    }
}
add_action('plugins_loaded', 'wpcourse_temp_manager_check_plugins');

// Функция для добавления плагина в список временной активации
function wpcourse_temp_manager_activate_plugin($plugin_file, $duration_seconds) {
    $plugins = get_option('wpcourse_temp_manager_plugins', []);
    $plugins[$plugin_file] = time() + $duration_seconds;
    update_option('wpcourse_temp_manager_plugins', $plugins);
    activate_plugin($plugin_file);
}

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

2. Использовать WP-CLI для активации с таймером

Если есть доступ к серверу, можно написать скрипты на WP-CLI, которые активируют плагин и регистрируют задачу cron для его отключения. Это более сложный, но мощный способ.

Тонкости и рекомендации по реализации

При внедрении временной активации важно учитывать несколько моментов:

  • Проверка отключения плагина выполняется при загрузке плагинов (plugins_loaded) — это гарантирует, что плагин ещё активен и может быть отключён.
  • Время отключения хранится в опции базы данных — это удобно и надёжно.
  • Для массовой временной активации разных плагинов удобнее использовать отдельный плагин-менеджер, чтобы централизованно управлять списком.
  • Автоматическое отключение плагинов может нарушить работу сайта, если плагин критически важен — используйте с осторожностью и тестируйте на стендах.

Пример использования временной активации с плагином WPRemark

Пусть нужно временно активировать плагин WPRemark для проведения теста отзывов. Через код можно сделать так:

if (!is_plugin_active('wpremark/wpremark.php')) {
    // Активируем WPRemark на 12 часов
    wpcourse_temp_manager_activate_plugin('wpremark/wpremark.php', 12 * 60 * 60);
}

После 12 часов плагин автоматически отключится, и не потребуется ручное вмешательство.

Альтернативные плагины для тестирования и временной активации

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

  • Plugin Organizer — позволяет управлять порядком и условиями загрузки плагинов.
  • WP Rollback — помогает быстро откатываться к предыдущим версиям плагинов для тестирования.
  • Clearfy Pro — частично оптимизирует и отключает ненужные функции WordPress, что полезно при тестах.

Однако для именно временной активации лучше использовать кастомный код, описанный выше.

Как создать и использовать шорткоды в WordPress: подробное руководство
08.11.2025
Как создать автоматические отчёты в WordPress с помощью WPGPT
10.02.2026
Как создать многоязычный сайт на WordPress с помощью Polylang
23.01.2026
Как удалить из изображений metadata EXIF в WordPress для ускорения сайта
16.12.2025
Как добавить временную активацию плагинов WordPress для тестирования
17.02.2026

Хотите научиться создавать сайты и зарабатывать на этом от 30 000 рублей в месяц?

Записаться на курс сейчас