Удаляет из массива расписания единственное событие, которое:
$timestamp
время,$hook
,$args
(или не имеет параметров вообще).wp_unschedule_event( $timestamp, $hook, $args = array() )
false
, в остальных случаях не возвращает ничего.
Если вам нужно получить ближайшее время, в которое будет запущено событие, привязанное к указанному хуку, используйте wp_next_scheduled().
А теперь пара примеров для того, чтобы прояснить ситуацию.
Может так получиться, что все данные события вам уже известны, это может быть в разных случаях (лично у меня такое бывало при интеграции со 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() (напишу про неё на следующей неделе).
Ну, этот пример есть повсюду, но всё же я считаю, что его стоит лишний раз упомянуть. Так вот, гораздо чаще бывает, что информации о времени выполнения события у нас нет, тогда в ход вступает функция wp_next_scheduled(), которая как раз это время и возвращает. Используем тот же хук, что и в прошлом примере:
wp_unschedule_event( wp_next_scheduled( 'wp_version_check' ), 'wp_version_check' );
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.