wp_doing_cron()WP 4.8.0

Определяет является ли текущий запрос, запросом к Крону. Условный тег.

Это обертка для проверки установлена ли константа 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 загружен через крон
}

Примеры

0

#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 6.4.3

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 );
}