wp_schedule_event()

Запускает повторяющееся событие
Функция WordPress
INT 2.1.0
WordPress Icon

Описание функции

Функция 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: вызывается перед удалением запланированного события.
Обсуждение