wp_doing_cron()
Определяет является ли текущий запрос, запросом к Крону. Условный тег.
Это обертка для проверки установлена ли константа DOING_CRON:
if( defined( 'DOING_CRON' ) && DOING_CRON ){ // крон задача }
Константа DOING_CRON устанавливается только когда запрос был запущен с файла wp-cron.php. Т.е. чтобы сработала эта условная функция, нужно чтобы WP загрузился через файл wp-cron.php. Обычно такую загрузку инициализирует запуск крона через функцию wp_cron(). Все это WordPress делает автоматически!
Есть точно такая же обертка для проверки AJAX запроса: wp_doing_ajax()
1 раз — 0.000021 сек (очень быстро) | 50000 раз — 0.12 сек (очень быстро) | PHP 7.1.2, WP 4.8
Хуки из функции
Возвращает
true|false
.
- true - если это крон запрос.
- false - если это любой другой запрос кроме Cron.
Использование
if( wp_doing_cron() ){ // WP загружен через крон }
Примеры
#1 Сделаем что либо только когда выполняется крон запрос.
Для примера, давайте удалим событие 'my_schedule_hook' из крон расписания, при очередном срабатывании крона...
add_action( 'shutdown', function(){ if( wp_doing_cron() ){ // удалим крон задачу $timestamp = wp_next_scheduled('my_schedule_hook'); wp_unschedule_event( $timestamp, 'my_schedule_hook' ); } });
Список изменений
С версии 4.8.0 | Введена. |
Код wp_doing_cron() wp doing cron WP 6.7.1
function wp_doing_cron() { /** * Filters whether the current request is a WordPress cron request. * * @since 4.8.0 * * @param bool $wp_doing_cron Whether the current request is a WordPress cron request. */ return apply_filters( 'wp_doing_cron', defined( 'DOING_CRON' ) && DOING_CRON ); }