- Описание функции
- Примеры использования
- Планирование повторяющегося события
- Установка времени выполнения события
- Задание действия при выполнении события
- Передача аргументов в обратный вызов
- Обработка ошибок при неудачном планировании события
- Вопросы и ответы
- Как настроить периодичность выполнения задачи?
- Как проверить успешность запланированного события?
- Как отменить запланированное событие?
- Как изменить время выполнения запланированного события?
- Как узнать расписание событий?
- Как обработать ошибку при запланировании события?
- Как использовать wp_schedule_event() в теме?
- Связанные элементы
Описание функции
Функция wp_schedule_event() используется для планирования повторяющегося события в WordPress.
Она позволяет установить расписание для выполнения определенного действия (action hook) через определенные промежутки времени.
Функция wp_schedule_event() является частью системы планирования событий в WordPress и использует внутренний планировщик для выполнения задач.
Использование
wp_schedule_event( int $timestamp, string $recurrence, string $hook, array $args = array(), bool $wp_error = false ): bool|WP_Error Функция wp_schedule_event() принимает следующие параметры:
$timestamp(обязательный): Временная метка Unix (UTC) для следующего запуска события.$recurrence(обязательный): Как часто должно повторяться событие. См. функциюwp_get_schedules()для принимаемых значений.$hook(обязательный): Действие (action hook), которое будет выполнено при запуске события.$args(необязательный): Массив, содержащий аргументы, передаваемые в обратный вызов (callback) действия (hook). Каждое значение в массиве передается в обратный вызов как отдельный параметр. Ключи массива игнорируются. По умолчанию: пустой массив.$wp_error(необязательный): Определяет, должен ли возвращаться объект WP_Error в случае ошибки. По умолчанию: false.
Функция возвращает true, если событие успешно запланировано. Возвращает false или объект WP_Error в случае ошибки.
<?php
// Устанавливаем расписание для выполнения действия 'my_custom_action' каждую минуту
$timestamp = time(); // Текущая временная метка
$recurrence = 'minute'; // Каждую минуту
$hook = 'my_custom_action'; // Действие, которое будет выполнено
$args = array( 'param1' => 'value1', 'param2' => 'value2' ); // Аргументы для обратного вызова действия
$result = wp_schedule_event( $timestamp, $recurrence, $hook, $args );
if ( $result ) {
echo 'Событие успешно запланировано!';
} else {
echo 'Ошибка при планировании события.';
}
?> В этом примере мы устанавливаем расписание для выполнения действия ‘my_custom_action’ каждую минуту. Мы передаем текущую временную метку, указываем ‘minute’ в качестве частоты повторения, указываем действие, которое будет выполнено, и передаем некоторые аргументы для обратного вызова действия. Затем мы проверяем результат функции wp_schedule_event() и выводим соответствующее сообщение.
Примеры использования
Планирование повторяющегося события
// Планирование повторяющегося события, которое будет выполняться каждый день
wp_schedule_event( time(), 'daily', 'my_daily_event' );
В этом примере мы используем функцию wp_schedule_event() для планирования повторяющегося события, которое будет выполняться каждый день. Мы передаем текущее время с помощью функции time() в качестве первого параметра, чтобы событие началось сразу после вызова функции. Второй параметр 'daily' указывает на то, что событие должно повторяться ежедневно. Третий параметр 'my_daily_event' — это имя действия, которое будет выполнено при каждом запуске события.
Установка времени выполнения события
// Планирование повторяющегося события, которое будет выполняться каждую неделю в определенное время
$timestamp = strtotime( 'next Sunday 15:00' );
wp_schedule_event( $timestamp, 'weekly', 'my_weekly_event' );
В этом примере мы используем функцию strtotime() для преобразования строки с указанием времени в Unix-метку времени. Мы устанавливаем время выполнения события на следующее воскресенье в 15:00. Затем мы используем функцию wp_schedule_event() для планирования повторяющегося события, которое будет выполняться каждую неделю. Третий параметр 'my_weekly_event' — это имя действия, которое будет выполнено при каждом запуске события.
Задание действия при выполнении события
// Регистрация функции обратного вызова для выполнения при запуске события
add_action( 'my_daily_event', 'my_daily_event_callback' );
function my_daily_event_callback() {
// Код, который будет выполнен при каждом запуске события
// ...
}
В этом примере мы используем функцию add_action() для регистрации функции обратного вызова my_daily_event_callback() для выполнения при запуске события с именем 'my_daily_event'. Внутри функции обратного вызова вы можете разместить любой код, который должен быть выполнен при каждом запуске события.
Передача аргументов в обратный вызов
// Регистрация функции обратного вызова с передачей аргументов
add_action( 'my_daily_event', 'my_daily_event_callback', 10, 2 );
function my_daily_event_callback( $arg1, $arg2 ) {
// Код, который будет выполнен при каждом запуске события
// Использование переданных аргументов $arg1 и $arg2
// ...
}
В этом примере мы используем функцию add_action() для регистрации функции обратного вызова my_daily_event_callback() с передачей двух аргументов. Внутри функции обратного вызова вы можете использовать переданные аргументы для выполнения определенных действий.
Обработка ошибок при неудачном планировании события
// Планирование повторяющегося события с обработкой ошибок
$result = wp_schedule_event( time(), 'invalid_recurrence', 'my_event', array(), true );
if ( is_wp_error( $result ) ) {
$error_message = $result->get_error_message();
// Обработка ошибки
// ...
}
В этом примере мы используем функцию wp_schedule_event() для планирования повторяющегося события с недопустимым значением параметра $recurrence. Мы устанавливаем четвертый параметр true, чтобы функция вернула объект WP_Error в случае ошибки. Затем мы используем функцию is_wp_error() для проверки, является ли результат ошибкой, и получаем сообщение об ошибке с помощью метода get_error_message(). Вы можете добавить свой код для обработки ошибки в этом блоке.
Вопросы и ответы
Как настроить периодичность выполнения задачи?
Для настройки периодичности выполнения задачи используется функция wp_schedule_event(). Она принимает следующие параметры:
$timestamp— обязательный параметр, указывающий на время следующего запуска задачи в формате Unix timestamp (UTC).$recurrence— обязательный параметр, определяющий, как часто задача должна повторяться. Допустимые значения можно получить с помощью функцииwp_get_schedules().$hook— обязательный параметр, указывающий на действие, которое должно быть выполнено при запуске задачи.$args— необязательный параметр, содержащий массив аргументов, которые будут переданы в колбэк-функцию действия.$wp_error— необязательный параметр, определяющий, должен ли возвращаться объект WP_Error в случае ошибки. По умолчанию установлено значение false.
Функция возвращает true, если задача успешно запланирована, и false или объект WP_Error в случае ошибки.
Как проверить успешность запланированного события?
Для проверки успешности запланированного события можно использовать возвращаемое значение функции wp_schedule_event(). Если оно равно true, значит задача успешно запланирована. В противном случае, если возвращается false или объект WP_Error, возникла ошибка при планировании задачи.
Как отменить запланированное событие?
Для отмены запланированного события используется функция wp_clear_scheduled_hook(). Она принимает два обязательных параметра:
$hook— указывает на действие, для которого нужно отменить запланированное событие.$args— массив аргументов, которые были переданы при планировании события. Эти аргументы используются для идентификации запланированного события.
Пример использования функции wp_clear_scheduled_hook():
wp_clear_scheduled_hook( 'my_custom_hook', array( 'arg1', 'arg2' ) );
В данном примере будет отменено запланированное событие для действия ‘my_custom_hook’ с переданными аргументами ‘arg1’ и ‘arg2’.
Как изменить время выполнения запланированного события?
Для изменения времени выполнения запланированного события необходимо использовать функцию wp_schedule_event() с указанием нового времени в параметре $timestamp. Новое время должно быть задано в формате Unix timestamp (UTC).
// Изменение времени выполнения события на 1 января 2022 года
$new_timestamp = strtotime('2022-01-01');
wp_schedule_event($new_timestamp, 'daily', 'my_custom_event');
Как узнать расписание событий?
Для получения информации о расписании событий можно использовать функцию wp_get_schedule(). Она возвращает строку с указанием периода повторения события.
// Получение расписания события "my_custom_event"
$schedule = wp_get_schedule('my_custom_event');
echo 'Расписание события: ' . $schedule;
Как обработать ошибку при запланировании события?
При запланировании события с помощью функции wp_schedule_event() можно указать параметр $wp_error со значением true, чтобы получить объект WP_Error в случае ошибки.
// Запланировать событие и обработать ошибку, если она возникнет
$result = wp_schedule_event($timestamp, 'daily', 'my_custom_event', array(), true);
if (is_wp_error($result)) {
echo 'Ошибка при запланировании события: ' . $result->get_error_message();
}
Как использовать wp_schedule_event() в теме?
Для использования функции wp_schedule_event() в теме необходимо добавить код в файл functions.php или в плагин. Функцию можно вызывать в хуке after_setup_theme или другом подходящем месте.
// Пример использования wp_schedule_event() в теме
function my_custom_event_callback() {
// Код обработки события
}
add_action('my_custom_event', 'my_custom_event_callback');
function schedule_my_custom_event() {
$timestamp = strtotime('tomorrow');
wp_schedule_event($timestamp, 'daily', 'my_custom_event');
}
add_action('after_setup_theme', 'schedule_my_custom_event');
Функция
wp_schedule_event()позволяет запланировать повторяющееся событие в WordPress. Она принимает параметры, такие как время выполнения, периодичность, хук и аргументы, и возвращаетtrueв случае успешного запланирования события. В случае ошибки можно использовать параметр$wp_errorдля получения объектаWP_Error. Функция может быть использована в теме WordPress для автоматизации определенных задач.
Связанные элементы
- Функция
wp_next_scheduled(): возвращает время следующего запланированного события. - Функция
wp_unschedule_event(): удаляет запланированное событие. - Функция
wp_reschedule_event(): изменяет расписание для существующего запланированного события. - Функция
wp_get_schedule(): возвращает расписание для указанного события. - Функция
wp_get_schedules(): возвращает доступные расписания для запланированных событий. - Хук
schedule_event: вызывается при запланировании нового события. - Хук
pre_schedule_event: вызывается перед запланированием нового события. - Хук
pre_unschedule_event: вызывается перед удалением запланированного события.