Когда работаешь с планировщиком WP-Cron, часто нужно знать — когда именно запустится та или иная задача, и вообще запланирована ли она. Функция wp_next_scheduled() отвечает на этот вопрос: возвращает время следующего выполнения указанного хука в формате UNIX, или false если задача не запланирована.
Синтаксис
wp_next_scheduled( $hook, $args = array() )
Параметры
$hook (строка) — название хука. Задачи в WP-Cron привязаны к хукам, на которые вешаются нужные функции.
$args (массив) — параметры. Задача считается уникальной в связке «хук + аргументы». То есть одна и та же задача, запущенная с разными параметрами, будет считаться отдельным событием — например, запланированная публикация разных записей.
Пример 1 — Узнать время следующей проверки обновлений
$vremya = wp_next_scheduled( 'wp_version_check' ); echo date( 'Y-m-d H:i', wp_next_scheduled( 'publish_future_post', array( 5 ) ) );
Первая строка получает время следующей проверки обновлений WordPress. Вторая — выводит дату и время запланированной публикации записи с ID 5 в читаемом формате.
Пример 2 — Проверить перед добавлением в расписание
Хорошая практика — перед тем как добавить задачу, убедиться что она ещё не запланирована:
if ( ! wp_next_scheduled( 'true_hook_5' ) ) {
wp_schedule_event( time(), 'daily', 'true_hook_5' );
}
Без этой проверки одна и та же задача может быть добавлена в расписание несколько раз, что приведёт к её многократному выполнению.
Пример 3 — Получить время для удаления события
Функция wp_unschedule_event() требует точное время события. Получить его можно через wp_next_scheduled():
$vremya = wp_next_scheduled( 'kakoi_to_huk' );
$original_args = array();
if ( $vremya ) {
wp_unschedule_event( $vremya, 'kakoi_to_huk', $original_args );
}