Wp_unschedule_event() - подробно о функции WordPress
Опубликовано: 01.09.2018
Удаляет из массива расписания единственное событие, которое:
должно выполниться в указанное в параметре $timestamp время, привязано к хуку $hook, имеет дополнительные параметры, заданные в массиве $args (или не имеет параметров вообще).wp_unschedule_event ( $timestamp , $hook , $args = array ( ) ) |
Если вам нужно получить ближайшее время, в которое будет запущено событие, привязанное к указанному хуку, используйте wp_next_scheduled() .
$hook (строка) Название хука. Больше и сказать нечего. Однако могу сослаться на описания функций wp_schedule_single_event() и wp_schedule_event() , где я подробно описывал этот момент с хуками. $args (массив) Параметры, переданные в хук.А теперь пара примеров для того, чтобы прояснить ситуацию.
1. Удаляем из расписания событие, все данные которого известны: время выполнения, название хука и параметры.
Может так получиться, что все данные события вам уже известны, это может быть в разных случаях (лично у меня такое бывало при интеграции со Stripe). А зная всё о событии, очень легко его удалить.
В этом примере я поступлю проще, при помощи вот такого кода: echo '<pre>' . print_r( get_option( 'cron' ), true ) . '</pre>';. Отсюда и возьму все данные о событии.
Как видите следующая проверка свежей версии WordPress запланирована на время 1424106216. Запускаем код:
wp_unschedule_event ( '1424106216' , 'wp_version_check' ) ; |
Вставляем его куда угодно, главное удалите после того, как он выполнится. Может показаться, что так как проверка обновлений производится дважды в день (twicedaily), то из расписания удалится только ближайшая утренняя (или какое там у вас время суток) проверка, а вечером она всё же будет запущена. Да ничего подобно, wp_version_check полностью исчезла из расписания задач.
Давайте объясню — дело в том, что функция удаляет не просто ближайшее событие, а один из элементов массива (вне зависимости от того, повторяющееся ли это событие или нет). Дело в том, что в массиве бывают ещё и такие записи, принадлежащие одному хуку.
Чтобы удалить такое, вам нужно либо несколько раз запускать wp_unschedule_event(), но лучше воспользоваться функцией wp_clear_scheduled_hook() (напишу про неё на следующей неделе).
2. Отменяем ближайшее событие, привязанное к заданному хуку.
Ну, этот пример есть повсюду, но всё же я считаю, что его стоит лишний раз упомянуть. Так вот, гораздо чаще бывает, что информации о времени выполнения события у нас нет, тогда в ход вступает функция wp_next_scheduled() , которая как раз это время и возвращает. Используем тот же хук, что и в прошлом примере:
wp_unschedule_event ( wp_next_scheduled ( 'wp_version_check' ) , 'wp_version_check' ) ; |