WP_GET_SCHEDULES() │ WordPress 2.1.0
Функция wp_get_schedules() позволяет получить доступ к поддерживаемым расписаниям повторения событий.
Поддерживаемые расписания
По умолчанию в WordPress доступны следующие расписания:
hourly— каждый часtwicedaily— дважды в деньdaily— каждый деньweekly— каждую неделю
Плагины могут добавлять свои собственные расписания, используя фильтр cron_schedules. Этот фильтр принимает массив, где ключом будет название расписания (например, monthly для ежемесячного расписания), а значением — массив с двумя элементами: interval и display.
interval— интервал в секундах, через который должно выполняться запланированное событие. Например, дляhourlyинтервал равенHOUR_IN_SECONDS(60 * 60 = 3600 секунд).display— строка, описывающая расписание. Например, для ключаmonthlydisplayбудет выглядеть так:__('Ежемесячно').
Пример использования
Вы можете добавить свое расписание с помощью следующего кода:
add_filter('cron_schedules', 'add_monthly_schedule');
function add_monthly_schedule($schedules) {
$schedules['monthly'] = array(
'interval' => MONTH_IN_SECONDS,
'display' => __('Ежемесячно')
);
return $schedules;
}
Возвращаемое значение
Функция возвращает массив, в котором содержатся расписания крон, сгруппированные по названиям расписаний.
Как использовать
Чтобы получить список доступных расписаний, воспользуйтесь функцией:
$schedules = wp_get_schedules();
print_r($schedules);
Пример вывода
Вот пример того, какие данные может в��рнуть вышеуказанный код:
Array
(
[hourly] => Array
(
[interval] => 3600
[display] => Каждый час
)
[twicedaily] => Array
(
[interval] => 43200
[display] => Дважды в день
)
[daily] => Array
(
[interval] => 86400
[display] => Каждый день
)
[weekly] => Array
(
[interval] => 604800
[display] => Каждую неделю
)
)
Пример добавления нового интервала
Чтобы добавить новый интервал (например, раз в неделю) в WordPress, используйте фильтр cron_schedules, как показано ниже:
add_filter('cron_schedules', 'cron_add_weekly');
function cron_add_weekly($schedules) {
$schedules['weekly'] = array(
'interval' => WEEK_IN_SECONDS, // Время в секундах
'display' => __('Каждую неделю')
);
return $schedules;
}
Изменения
- С версии 2.1.0 — функция была введена.
- С версии 5.4.0 — добавлено расписание 'weekly'.
Код функции
Вот пример кода, который отвечает за функциональность wp_get_schedules():
function wp_get_schedules() {
$schedules = array(
'hourly' => array(
'interval' => HOUR_IN_SECONDS,
'display' => __('Каждый час'),
),
'twicedaily' => array(
'interval' => 12 * HOUR_IN_SECONDS,
'display' => __('Дважды в день'),
),
'daily' => array(
'interval' => DAY_IN_SECONDS,
'display' => __('Каждый день'),
),
'weekly' => array(
'interval' => WEEK_IN_SECONDS,
'display' => __('Каждую неделю'),
),
);
return array_merge(apply_filters('cron_schedules', array()), $schedules);
}
Заключение
Функция wp_get_schedules() — это удобный инструмент для работы с крон-задачами в WordPress. Используя её, вы можете управлять расписаниями выполнения событий и добавлять свои собственные опции, что делает работу с задачами более гибкой и простой.