wp_schedule_single_event()

Запускает событие, которое должно выполняться только один раз
Функция WordPress
INT 2.1.0
WordPress Icon

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

Функция wp_schedule_single_event() позволяет запланировать выполнение события только один раз. Она добавляет указанное событие в очередь на выполнение и устанавливает время его запуска.

После добавления события в очередь, оно будет выполнено при наступлении указанного времени. Это может быть полезно, например, для выполнения определенного действия в будущем, например, отправки уведомления или обновления данных.

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

wp_schedule_single_event( int $timestamp, string $hook, array $args = array(), bool $wp_error = false ): bool|WP_Error

Функция wp_schedule_single_event() принимает следующие параметры:

  • $timestamp (обязательный) — Unix-временная метка (UTC), когда должно быть выполнено событие.
  • $hook (обязательный) — Название действия, которое должно быть выполнено при запуске события.
  • $args (необязательный) — Массив, содержащий аргументы, которые будут переданы в обратный вызов действия. Каждое значение в массиве передается в обратный вызов как отдельный параметр. Ключи массива игнорируются. По умолчанию: пустой массив.
  • $wp_error (необязательный) — Определяет, нужно ли возвращать объект WP_Error в случае ошибки. По умолчанию: false.

Функция возвращает true, если событие успешно запланировано. В случае ошибки возвращает false или объект WP_Error.

<?php
// Устанавливаем время выполнения события на 1 января 2023 года в 12:00:00
$timestamp = strtotime('2023-01-01 12:00:00');
// Название действия, которое должно быть выполнено
$hook = 'my_custom_action';
// Аргументы для передачи в обратный вызов действия
$args = array(
  'param1' => 'value1',
  'param2' => 'value2',
);
// Запланировать выполнение события
$result = wp_schedule_single_event($timestamp, $hook, $args);
if ($result) {
  echo 'Событие успешно запланировано.';
} else {
  echo 'Ошибка при планировании события.';
}
?>

В этом примере мы устанавливаем время выполнения события на 1 января 2023 года в 12:00:00. Затем мы указываем название действия, которое должно быть выполнено, и передаем некоторые аргументы в обратный вызов действия. Затем мы вызываем функцию wp_schedule_single_event() с этими параметрами.

Если событие успешно запланировано, выводится сообщение «Событие успешно запланировано». В противном случае выводится сообщение «Ошибка при планировании события».

Примеры использования

Планирование одноразового события


// Планирование одноразового события на выполнение через 5 минут
$timestamp = time() + 5 * MINUTE_IN_SECONDS;
$hook = 'my_custom_event';
$args = array( 'param1' => 'value1', 'param2' => 'value2' );
$result = wp_schedule_single_event( $timestamp, $hook, $args );
if ( $result ) {
    echo 'Событие успешно запланировано.';
} else {
    echo 'Ошибка при планировании события.';
}

Передача аргументов в коллбэк функцию


// Коллбэк функция, которая будет выполнена при запуске события
function my_custom_callback( $param1, $param2 ) {
    // Ваш код обработки события
    echo 'Параметр 1: ' . $param1 . '<br>';
    echo 'Параметр 2: ' . $param2;
}
// Планирование одноразового события с передачей аргументов в коллбэк функцию
$timestamp = time() + 5 * MINUTE_IN_SECONDS;
$hook = 'my_custom_event';
$args = array( 'param1' => 'value1', 'param2' => 'value2' );
$result = wp_schedule_single_event( $timestamp, $hook, $args );
if ( $result ) {
    echo 'Событие успешно запланировано.';
} else {
    echo 'Ошибка при планировании события.';
}

Обработка ошибок при планировании события


// Планирование одноразового события с обработкой ошибок
$timestamp = time() + 5 * MINUTE_IN_SECONDS;
$hook = 'my_custom_event';
$args = array( 'param1' => 'value1', 'param2' => 'value2' );
$result = wp_schedule_single_event( $timestamp, $hook, $args, true );
if ( is_wp_error( $result ) ) {
    echo 'Ошибка при планировании события: ' . $result->get_error_message();
} else {
    echo 'Событие успешно запланировано.';
}

Установка времени выполнения события


// Планирование одноразового события на выполнение в определенное время
$timestamp = strtotime( '2022-12-31 23:59:59' );
$hook = 'my_custom_event';
$args = array( 'param1' => 'value1', 'param2' => 'value2' );
$result = wp_schedule_single_event( $timestamp, $hook, $args );
if ( $result ) {
    echo 'Событие успешно запланировано.';
} else {
    echo 'Ошибка при планировании события.';
}

Вопросы и ответы

Как создать одноразовое событие с помощью функции wp_schedule_single_event()?

Для создания одноразового события с помощью функции wp_schedule_single_event() необходимо передать следующие параметры:

  • $timestamp — обязательный параметр, представляющий собой Unix-временную метку (в формате UTC), указывающую, когда должно быть запущено событие.
  • $hook — обязательный параметр, представляющий собой название действия (hook), которое должно быть выполнено при запуске события.
  • $args — необязательный параметр, представляющий собой массив аргументов, которые будут переданы в функцию обратного вызова действия (hook). Каждое значение в массиве передается в функцию обратного вызова как отдельный параметр. Ключи массива игнорируются. По умолчанию: array().
  • $wp_error — необязательный параметр, определяющий, нужно ли возвращать объект WP_Error в случае ошибки. По умолчанию: false.

Пример использования функции wp_schedule_single_event():


$timestamp = strtotime( '2022-01-01 00:00:00' );
$hook = 'my_custom_hook';
$args = array( 'param1', 'param2' );
$result = wp_schedule_single_event( $timestamp, $hook, $args );
if ( $result ) {
  echo 'Событие успешно запланировано.';
} else {
  echo 'Ошибка при планировании события.';
}

Как проверить успешное выполнение запланированного события?

Для проверки успешного выполнения запланированного события можно использовать возвращаемое значение функции wp_schedule_single_event().

Функция wp_schedule_single_event() возвращает значение типа bool или объект WP_Error в случае ошибки.

Пример проверки успешного выполнения запланированного события:


$result = wp_schedule_single_event( $timestamp, $hook, $args );
if ( $result ) {
  echo 'Событие успешно запланировано.';
} else {
  echo 'Ошибка при планировании события.';
}

Как отменить запланированное одноразовое событие?

Для отмены запланированного одноразового события необходимо использовать функцию wp_clear_scheduled_hook().

Функция wp_clear_scheduled_hook() принимает один обязательный параметр — название действия (hook), которое было запланировано.

Пример отмены запланированного одноразового события:


$hook = 'my_custom_hook';
$result = wp_clear_scheduled_hook( $hook );
if ( $result ) {
  echo 'Событие успешно отменено.';
} else {
  echo 'Ошибка при отмене события.';
}

Как узнать, когда запланированное событие будет выполнено?

Для того чтобы узнать, когда запланированное событие будет выполнено, необходимо использовать функцию wp_next_scheduled(). Она принимает один обязательный параметр — название хука, и возвращает время следующего запланированного события в формате Unix timestamp (UTC).


$next_event_time = wp_next_scheduled( 'my_custom_hook' );

Как обработать ошибку при запланировании одноразового события?

При запланировании одноразового события с помощью функции wp_schedule_single_event() можно обработать возможные ошибки, указав третий параметр как true. В этом случае функция вернет объект класса WP_Error, содержащий информацию об ошибке.


$result = wp_schedule_single_event( $timestamp, 'my_custom_hook', $args, true );
if ( is_wp_error( $result ) ) {
    $error_message = $result->get_error_message();
    // Обработка ошибки
}

Как использовать функцию wp_schedule_single_event() в теме WordPress?

Для использования функции wp_schedule_single_event() в теме WordPress необходимо добавить вызов этой функции в нужном месте кода. Например, можно добавить вызов в хук after_setup_theme, чтобы запланировать выполнение события после инициализации темы.


function my_custom_event() {
    // Код для выполнения одноразового события
}
add_action( 'after_setup_theme', function() {
    wp_schedule_single_event( $timestamp, 'my_custom_hook', $args );
} );

Как использовать функцию wp_schedule_single_event() для выполнения действий после определенного времени?

Для выполнения действий после определенного времени с помощью функции wp_schedule_single_event() необходимо указать в параметре $timestamp время, когда нужно выполнить событие. Время должно быть задано в формате Unix timestamp (UTC).


$timestamp = strtotime( '2022-01-01 00:00:00' ); // Время, когда нужно выполнить событие
wp_schedule_single_event( $timestamp, 'my_custom_hook', $args );

Функция wp_schedule_single_event() позволяет запланировать выполнение одноразового события в WordPress. Она принимает параметры, такие как время выполнения события, название хука и аргументы для передачи в обработчик события. Функция возвращает true в случае успешного запланирования события и false или объект класса WP_Error в случае ошибки. Для узнавания времени следующего запланированного события можно использовать функцию wp_next_scheduled(). При возникновении ошибки при запланировании события можно обработать ее с помощью условного оператора и функции is_wp_error(). Функцию wp_schedule_single_event() можно использовать в теме WordPress, добавляя вызов в нужное место кода, например, в хук after_setup_theme. Для выполнения действий после определенного времени необходимо указать время выполнения события в параметре $timestamp.

Связанные элементы

  • Функция wp_schedule_event(): Регистрирует событие для запуска по расписанию.
  • Функция wp_unschedule_event(): Удаляет событие из расписания.
  • Функция wp_next_scheduled(): Возвращает время следующего запуска события.
Обсуждение