WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

wp_cron() WP 2.1

Запускает все запланированные Крон события, время которых подошло.

Ищем WP-разработчика! Фулл-тайм, удаленка, хорошая зарплата, соц. пакет. Подробности.
Компания Boosta.

Проверяет существует ли хоть одно задание с подошедшем временем. Если да, то вызывает функцию 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

Работает на основе: _wp_cron()

Хуков нет.

Возвращает

true|false|int|null.

  • Число — при успешном выполнении — число отработанных событий (0 означает что сейчас нет событий которые нужно выполнить).
  • false — когда не удалось обработать хоть одно событие.

Использование

<?php wp_cron() ?>

Примеры

#1. Пример, отправки сообщения ежечасно на 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. Добавление крон задачи и своего интервала

Код нужно добавлять в файл 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.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 5.8.2

function wp_cron() {
	if ( did_action( 'wp_loaded' ) ) {
		return _wp_cron();
	}

	add_action( 'wp_loaded', '_wp_cron', 20 );
}

cron (расписание schedule)

25 комментов
Полезные 1 Вопросы 2 Все
    Войти