WordPress как на ладони
WordCamp Saint Petersburg 2018 wordpress jino

cron_schedules хук-фильтр . WP 2.1.0

Позволяет добавить новый интервал времени для Крон задач (расписаний).

При добавлении Крон задачи, ей обычно указывается интервал времени, через который эта задача должна повторяться вновь и вновь. По умолчанию в WP таких интервалов всего 3: hourly, twicedaily и daily.

$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' ) ),
);

Через этот фильтр можно расширить список интервалов, добавив свои интервалы, которые затем можно использовать при создании Крон задачи.

Как создавать свои задачи подробно описано в функции wp_schedule_event().

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

add_filter( 'cron_schedules', 'filter_function_name_2626' );
function filter_function_name_2626( $new_schedules ){
	// filter...

	return $new_schedules;
}
$new_schedules(массив)
Массив с данными новых интервалов времени.
По умолчанию: array()

Примеры

#1 Добавление нового интервала для Cron

Добавим интервал события - раз в 5 минут:

// регистрируем пятиминутный интервал
add_filter( 'cron_schedules', 'cron_add_five_min' );
function cron_add_five_min( $schedules ) {
	$schedules['five_min'] = array(
		'interval' => 60 * 5,
		'display'  => 'Раз в 5 минут'
	);
	return $schedules;
}

Где используется хук

Код хука-фильтра cron_schedules

Фрагмент из: wp-includes/cron.php VER 4.9.6
...
 * @return array
 */
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 );
}

/**
 * Retrieve the recurrence schedule for an event.
 *
 * @see wp_get_schedules() for available schedules.
 *
 * @since 2.1.0
 *
 * @param string $hook Action hook to identify the event.
 * @param array $args Optional. Arguments passed to the event's callback function.
 * @return string|false False, if no schedule. Schedule name on success.
 */
function wp_get_schedule($hook, $args = array()) {
	$crons = _get_cron_array();
...
cron_schedules Комментариев нет

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