WP_CRON() │ WP 2.1.0
Функция WP_CRON() предназначена для выполнения всех запланированных задач (крон-заданий), время которых пришло.
Что делает эта функция?
Функция проверяет, есть ли хотя бы одно крон-задание, время которого наступило, и вызывает функцию spawn_cron(), которая отправляет запрос к файлу крон задачи: /example.com/wp-cron.php.
При вызове этой функции запускаются все запланированные задачи, срок выполнения которых уже настал.
Вы можете узнать больше о крон-заданиях, прочитав о функции wp_schedule_event(), которая используется для добавления новых задач. В документации много примеров и полезной информации о кроне в WordPress.
Эта функция автоматически вызывается движком WordPress во время события init.
if ( ! defined( 'DOING_CRON' ) ) {
add_action( 'init', 'wp_cron' );
}
Нужно ли использовать эту функцию?
В большинстве случаев вам не нужно вручную вызывать эту функцию. Она не будет работать, если определена константа DISABLE_WP_CRON.
Крон получил свое название от программы Unix, которая запускает запланированные задачи без участия пользователя.
Возвращаемые значения
Функция может вернуть:
- Число — количество выполненных задач (0 означает, что задач для выполнения нет).
- false — если не удалось обработать ни одно задание.
Эта функция может вернуть логическое значение FALSE, но также может вернуть и другое значение, которое будет оценено как FALSE. Для получения информации о приведении к логическим значениям смотрите документацию PHP. Используйте оператор === для проверки возвращаемого значения этой функции.
Использование
wp_cron();
Примеры
Пример 1: Отправка письма каждый час
Вы можете поместить этот код в файл 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( '[email protected]', 'Запланированное письмо', 'Письмо, запланированное от WordPress.');
}
Пример 2: Добавление крон-события с пользовательским интервалом
Код следует добавить в файл 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['my_cron_worker'] = array( 'interval' => 60, 'display' => 'Мой Крон Работник' );
return $schedules;
}
Изменения
- В версии 2.1.0 функция была введена.
- В версии 5.1.0 добавлено значение возврата для указания успешного завершения или сбоя.
- В версии 5.7.0 функциональность была перенесена в функцию
_wp_cron(), к которойwp_cron()становится оберткой.
Функция wp_cron()
Функция wp_cron() реализована в файле wp-includes/cron.php:
function wp_cron() {
if ( did_action( 'wp_loaded' ) ) {
return _wp_cron();
}
add_action( 'wp_loaded', '_wp_cron', 20 );
}
Связанные функции
wp_clear_scheduled_hook()wp_delete_auto_drafts()wp_get_schedules()wp_next_scheduled()wp_schedule_event()wp_schedule_single_event()wp_unschedule_event()wp_unschedule_hook()
Эти функции могут помочь вам лучше управлять крон-заданиями в WordPress.