Когда работаешь с планировщиком 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 );
}
Разработка сайтов на Wordpress