wp_cron

Запускает все запланированные через cron действия.

При вызове этой функции, будут запущены все действия, которые были запланированы и время их запуска уже наступило.

Обычно эту функцию не нужно вызывать отдельно. Она вызывается автоматически когда нужно. Чтобы “повесить” событие на крон, используйте wp_schedule_event().

Если где-то определена константа DISABLE_WP_CRON, то функция ничего не запустит.

Хуков нет.

Возвращает

Ничего не возвращает.

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

<?php wp_cron() ?>

Примеры

#1. Пример, отправки сообщения ежечасно на email.

add_action( 'my_task_hook', 'my_task_function' );

if ( ! wp_next_scheduled( 'my_task_hook' ) ) {
  wp_schedule_event( time(), 'hourly', 'my_task_hook' );
}

function my_task_function() {
  wp_mail( 'your@email.com', 'Автоматическое письмо', 'Запланированное письмо от WordPress.');
}

Чтобы такой код начал работать, его можно поместить, например, в файл темы functions.php.

Заметки

cron — название взятое из UNIX-подобных операционных системах, где в задачи этого демон-планировщика задач входит: периодическое выполнение заданий в определённое время.

Код из


wp-includes/cron.php

WP 4.7.2

<?php
function wp_cron() {
	// Prevent infinite loops caused by lack of wp-cron.php
	if ( strpos($_SERVER['REQUEST_URI'], '/wp-cron.php') !== false || ( defined('DISABLE_WP_CRON') && DISABLE_WP_CRON ) )
		return;

	if ( false === $crons = _get_cron_array() )
		return;

	$gmt_time = microtime( true );
	$keys = array_keys( $crons );
	if ( isset($keys[0]) && $keys[0] > $gmt_time )
		return;

	$schedules = wp_get_schedules();
	foreach ( $crons as $timestamp => $cronhooks ) {
		if ( $timestamp > $gmt_time ) break;
		foreach ( (array) $cronhooks as $hook => $args ) {
			if ( isset($schedules[$hook]['callback']) && !call_user_func( $schedules[$hook]['callback'] ) )
				continue;
			spawn_cron( $gmt_time );
			break 2;
		}
	}
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *