Как отключить/включить плагин в определенное время

Вопрос или проблема

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

Например, я хотел бы отключить плагин wp contact form 7 каждый вторник в 6 утра и включить его в среду в 2 часа дня.

Это осуществимо?

Спасибо!


Думаю, я не был достаточно ясен, но я использовал Contact Form 7 только в качестве примера. Плагин, который я хочу отключить, — случайный плагин, и я хочу полностью отключить и включить его на основе предопределенного времени.

Вы можете использовать функцию deactivate_plugins() для деактивации плагина

if ( ! wp_next_scheduled( 'deactivate_plugin_conditional_hook' ) ) {
  wp_schedule_event( time(), 'twicedaily', 'deactivate_plugin_conditional_hook' );
}

add_action( 'deactivate_plugin_conditional_hook', 'deactivate_plugin_conditional_2345678999343434' );

function deactivate_plugin_conditional_2345678999343434() {
$plugin_path="plugin-folder/plugin-name.php";
    if ( is_plugin_active($plugin_path) ) {
    deactivate_plugins($plugin_path);    
    }
}

Вы можете установить пользовательское событие, см. здесь https://codex.wordpress.org/Function_Reference/wp_schedule_event

Примечание: это не протестированный код

Ответ или решение

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

Шаг 1: Определите необходимые временные интервалы

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

Шаг 2: Создание пользовательских крон-заданий

WordPress предоставляет встроенные возможности для планирования задач через wp-cron. Для создания пользовательских событий крон-заданий вам потребуется подключить две функции:

  1. wp_schedule_event(): Используйте эту функцию для создания расписания ваших событий.
  2. add_action(): Используйте для привязки вашей функции к определённым действиям.
// Планируем первое событие - отключение плагина
function register_deactivation_event() {
  if (!wp_next_scheduled('deactivate_plugin_event')) {
    $timestamp = strtotime('next Tuesday 6:00');
    wp_schedule_event($timestamp, 'weekly', 'deactivate_plugin_event');
  }
}
add_action('wp', 'register_deactivation_event');

// Планируем второе событие - включение плагина
function register_activation_event() {
  if (!wp_next_scheduled('activate_plugin_event')) {
    $timestamp = strtotime('next Wednesday 14:00');
    wp_schedule_event($timestamp, 'weekly', 'activate_plugin_event');
  }
}
add_action('wp', 'register_activation_event');

Шаг 3: Создайте функции для активации и деактивации плагина

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

function deactivate_my_plugin() {
  $plugin_path = 'plugin-folder/plugin-name.php'; // Укажите путь к вашему плагину
  if (is_plugin_active($plugin_path)) {
    deactivate_plugins($plugin_path);
  }
}
add_action('deactivate_plugin_event', 'deactivate_my_plugin');

function activate_my_plugin() {
  $plugin_path = 'plugin-folder/plugin-name.php'; // Укажите путь к вашему плагину
  if (!is_plugin_active($plugin_path)) {
    activate_plugin($plugin_path);
  }
}
add_action('activate_plugin_event', 'activate_my_plugin');

Шаг 4: Убедитесь в отсутствии конфликтов

Проверьте наличие сторонних плагинов, которые могут влиять на работу wp-cron, таких как WP-Cron Control или другие менеджеры крон-задач.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...