Вопрос или проблема
Есть ли хук, который позволит мне отключить и включить указанный плагин в определенное время?
Например, я хотел бы отключить плагин 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. Для создания пользовательских событий крон-заданий вам потребуется подключить две функции:
wp_schedule_event()
: Используйте эту функцию для создания расписания ваших событий.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. Надеюсь, это решение будет вам полезно.