Главная Новости

Cron_schedules — Позволяет добавить новый интервал времени для Крон задач (расписаний). Хук-фильтр WordPress

Опубликовано: 01.09.2018

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

При добавлении Крон задачи, ей обычно указывается интервал времени, через который эта задача должна повторяться вновь и вновь. По умолчанию в 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; }

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

... * @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(); ...
rss