wp_cron()
Запускает все запланированные Крон события, время которых подошло.
Проверяет существует ли хоть одно задание с подошедшем временем. Если да, то вызывает функцию spawn_cron(), которая в свою очередь создает запрос на файл крона /example.com/wp-cron.php.
При вызове этой функции, будут запущены все действия, которые были запланированы и время их запуска уже наступило.
Подробнее про крон читайте в описании функции wp_schedule_event(), которая создает новое крон-событие. Там куча примеров и по сути все то, что нужно знать о крон в WordPress.
Эту функцию не нужно вызывать отдельно. Она вызывается автоматически на событии init:
if ( ! defined( 'DOING_CRON' ) ) { add_action( 'init', 'wp_cron' ); }
Если где-то определена константа DISABLE_WP_CRON
, то функция ничего не запустит.
Cron — это название взято из UNIX-подобных операционных систем, где в задачи этого демон-планировщика входит: периодическое выполнение заданий в определённое время.
Подробно о Крон: WP Cron (планировщик) в WordPress
Хуков нет.
Возвращает
false|int|null
.
- Число — при успешном выполнении — число отработанных событий (0 означает что сейчас нет событий которые нужно выполнить).
- false — когда не удалось обработать хоть одно событие.
Использование
<?php wp_cron() ?>
Примеры
#1 Добавление крон задачи и своего интервала
Код нужно добавлять в файл functions.php или плагин.
add_filter( 'cron_schedules', 'mycron_add_schedule' ); add_action( 'init', 'mycron_add_hook' ); ## добавляет крон функцию function mycron_add_hook(){ if ( ! wp_next_scheduled( 'my_cron_worker_start' ) ) { wp_schedule_event( time(), 'my_cron_worker', 'my_cron_worker_start' ); } } ## добавляет крон интервал времени function mycron_add_schedule( $schedules ){ $schedules['my_cron_worker'] = array( 'interval' => 60, 'display' => 'My Cron Worker' ); return $schedules; }
#2 Пример, отправки сообщения ежечасно на email.
Код можно поместить, например, в файл темы functions.php.
// включаем крон задачу, если она еще не включена. // Лучше это делать один раз при активации плагина, например if ( ! wp_next_scheduled( 'my_task_hook' ) ) { wp_schedule_event( time(), 'hourly', 'my_task_hook' ); } // добавляем крон хук add_action( 'my_task_hook', 'my_task_function' ); function my_task_function() { wp_mail( 'your@email.com', 'Автоматическое письмо', 'Запланированное письмо от WordPress.'); }
Список изменений
С версии 2.1.0 | Введена. |
С версии 5.1.0 | Return value added to indicate success or failure. |
С версии 5.7.0 | Functionality moved to _wp_cron() to which this becomes a wrapper. |
Код wp_cron() wp cron WP 6.7.1
function wp_cron() { if ( did_action( 'wp_loaded' ) ) { return _wp_cron(); } add_action( 'wp_loaded', '_wp_cron', 20 ); }