WordPress как на ладони
Готовые темы (шаблоны) для WordPress wordpress jino

wp_cron() WP 2.1

Запускает все запланированные в Крон (cron) события.

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

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

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

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

Хуков нет.

Возвращает

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

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

<?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.

Код wp cron: wp-includes/cron.php WP 4.7.5

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

Cвязанные функции

Из метки: cron (расписание schedule)

wp_cron 9 комментариев
  • bowman

    Можно пояснить. Допустим у меня некоторый код в functions.php с функцией wp_schedule_event (...)
    Выполняться код будет только, eсли вызвать на какой-нибудь странице функцию wp_cron() .
    Все правильно?

    Ответить3.1 года назад #
    • Kama4349

      Не совсем, крон задачи выполняются в WordPress автоматически, если крон не отключен. Нет необходимости отдельно вызывать эту функцию, чтобы запланированные крон задачи выполнялись.

      Но вы правы, если вызвать эту функции, то будет насильно инициализрована крон работа.

      Ответить2.5 года назад #
      2
  • artem78

    Скажите пожалуйста, как определить, что задача выполняется в данный момент?

    Ответить2.1 года назад #
  • Andrey
    @

    Здравствуйте, Тимур! А как быть, если нужно не hourly а раз в 15 минут?
    Спасибо!

    Ответитьгод назад #
    1
    • Юра
      wp_schedule_single_event( time() + 900, 'my_new_event', array( 'some_arg' ) );
      Ответитьгод назад #
  • Олег cайт: amix24.com
    @

    Здравствуйте. Почему-то задачи в кроне удаляются сами по себе, хотя у них прописана переодичность. в чем может быть причина? задачи прописывал через плагин WP Crontrol

  • Михаил cайт: trapeznaya.ucoz.ru

    cron - это уязвимое место в wordpress - ссылка о ddos атаке через cron

    Ответить3 месяца назад #
    • Kama4349

      Бред какой-то там написан, про число какое-то статическое... Атаковать можно куда угодно: на файл комментов, файл аякса, да тупо в главную параметры запроса поставляй и погнали...

      Ответить3 месяца назад #

Здравствуйте, !

Ваш комментарий