Возвращает время следующего выполнения указанной запланированной задачи в 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