wp_get_schedules

Получает поддерживаемые Cron интервалы времени.

Поддерживаемые интервалы времени – это зарегистрированные в WP интервалы, которые можно указывать в функциях планирования событий, таких как wp_schedule_event() – в аргументе $recurrence мы указываем: ‘hourly‘, ‘twicedaily‘ или ‘daily‘.

Плагины могут добавлять свои интервалы, используя фильтр cron_schedules. Это хук передает массив массивов с данными о каждом интервале (см. пример 1): названия ключей главного массива – это название интервалов, значение имеет массив с двумя элементами: ‘interval’ и ‘display’.

interval – это значение в секундах, интервал через который задание должно повторяться. Так, hourly (каждый час) имеет значение – 3600 (60*60). Недельный интервал будет соответственно иметь значение 60*60*24*7 или 604800.

Хуки из функции:
cron_schedules
Возвращает

Массив. Двумерный ассоциативный массив данных.

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

<?php wp_get_schedules(); ?>

Примеры

#1. Пример того, что возвращает функция:

$rrr = wp_get_schedules();

echo print_r($rrr);

/*
получим:
Array
(
	[hourly] => Array
		(
			[interval] => 3600
			[display] => Каждый час
		)

	[twicedaily] => Array
		(
			[interval] => 43200
			[display] => Два раза в день
		)

	[daily] => Array
		(
			[interval] => 86400
			[display] => Каждый день
		)

)
*/

#2. Пример добавления нового интервала для плагина.

Чтобы добавить новый интервал для Cron в WordPress мы можем использовать фильтр cron_schedules. Добавим интервал повторения события: раз в неделю:

add_filter( 'cron_schedules', 'cron_add_weekly' );

function cron_add_weekly( $schedules ) {
	// Adds once weekly to the existing schedules.
	$schedules['weekly'] = array(
		'interval' => WEEK_IN_SECONDS, // 604800 сек.
		'display' => __( 'Once Weekly' )
	);
	return $schedules;
}

Код из


wp-includes/cron.php

WP 4.7.2

<?php
function wp_get_schedules() {
	$schedules = array(
		'hourly'     => array( 'interval' => HOUR_IN_SECONDS,      'display' => __( 'Once Hourly' ) ),
		'twicedaily' => array( 'interval' => 12 * HOUR_IN_SECONDS, 'display' => __( 'Twice Daily' ) ),
		'daily'      => array( 'interval' => DAY_IN_SECONDS,       'display' => __( 'Once Daily' ) ),
	);
	/**
	 * Filters the non-default cron schedules.
	 *
	 * @since 2.1.0
	 *
	 * @param array $new_schedules An array of non-default cron schedules. Default empty.
	 */
	return array_merge( apply_filters( 'cron_schedules', array() ), $schedules );
}

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


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

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