wp_next_scheduled() — возвращает ближайшее время выполнения указанного хука

Возвращает время следующего выполнения указанной запланированной задачи в UNIX формате, либо false — если задача не запланирована.

wp_next_scheduled( $hook, $args = array() )
$hook
(строка) Название хука. Если пока ничего не понятно, рекомендую сначала глянуть статьи про wp_schedule_single_event() и wp_schedule_event() — они можно сказать вступительные. В них вы узнаете, что запланированные задачи WordPress запускаются не через функции напрямую, а через механизм хуков. Соответственно на хук уже можно повесить функции.
$args
(массив) Параметры. Запланированная задача считается уникальной, если в неё переданы параметры (опять-таки смотрите подробности по ссылкам, которые я вам дал). То есть пост с ID равным 5 опубликуется в одно время, а пост с ID 7 — в другое. Получается, что время запланированной публикации отличается в зависимости от параметра ID записи.

Понятное дело, что трудно разобраться просто на словах, поэтому и перейдём к примерам. Итак, функция wp_next_scheduled() чаще всего используется в следующих случаях:

1. Просто узнаём время следующей. . . проверки обновлений WordPress

$vremya = wp_next_scheduled('wp_version_check'); // например: 1424106216

Также очень просто определить дату и время публикации запланированного поста, например с ID 5. Записывать в перемнную не будем, а сразу выведем её, ещё и приведём к более наглядному виду при помощи PHP-функции date().

echo date('Y-m-d H:i', wp_next_scheduled('publish_future_post', array( 5 ) ) ); // например: 2016-03-03 08:19

О том, где брать названия подобных хуков уже написано в одной из предыдущих статей.

2. Перед использованием wp_schedule_event() проверяем, не запланирована ли уже эта задача

if( !wp_next_scheduled('true_hook_5') )
    wp_schedule_event( time(), 'daily', 'true_hook_5');

Если неграмотно использовать функцию wp_schedule_event(), то очень легко допустить то, что на вашем сайте появятся копии каких-либо задач и допустим хук true_hook_5 (из примера) будет выполняться не раз в день, а 4 раза в день. Поэтому подобная проверка очень желательна.

Однако хочу обратить особое внимание на функцию wp_schedule_single_event(), потому что она уже содержит такую проверку внутри себя и поэтому через неё вы никак не запланируете одну и ту же задачу дважды, если только предыдущая не выполнится в течение ближайших 10 минут.

3. Определяем время выполнения события для того, чтобы удалить его функцией wp_unschedule_event()

// Получаем время следующего выполнения задачи
$vremya = wp_next_scheduled( 'kakoi_to_huk' );
 
// Если задача была создана с дополнительными параметрами, их тоже нужно указать
$original_args = array();
 
// Если задача есть в расписании, удаляем её оттуда
if( $vremya )
    wp_unschedule_event( $vremya, 'kakoi_to_huk', $original_args );

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: