Документация WordPress

wp_schedule_event

Функция wp_schedule_event() в WordPress используется для создания периодических задач с кроном (cron-задач). Данный функционал WordPress позволяет выполнять код автоматически через определённые интервалы времени без необходимости вмешательства пользователя.

Синтаксис

wp_schedule_event( $timestamp, $recurrence, $hook, $args = array(), $wp_error = false );

Аргументы

  1. $timestamp (int, обязательный) — Временная метка (Unix timestamp) первой активации события.
  2. $recurrence (string, обязательный) — Частота выполнения. Должно соответствовать зарегистрированным интервалам (hourly, twicedaily, daily и т. д.).
  3. $hook (string, обязательный) — Название хука, который будет срабатывать по расписанию.
  4. $args (array, необязательный) — Массив аргументов, передаваемых в функцию-хук (по умолчанию array() — пустой массив).
  5. $wp_error (bool, необязательный, false по умолчанию) — Если true, функция вернёт WP_Error в случае ошибки, иначе false.

Как работает wp_schedule_event()?

  1. Функция wp_schedule_event() добавляет новое задание в системный крон WordPress для автоматического выполнения.
  2. При наступлении $timestamp времени выполнения WordPress активирует указанный хук $hook и задача отрабатывает в автоматическом режиме.
  3. Этот хук можно использовать для выполнения своего кода и функций (например, очистки базы данных, отправки email, обновления записей и т. д.).

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

Пример 1: Запуск задачи раз в день

Этот код создаёт задание my_custom_cron_hook, которое выполняется ежедневно.

Пример 2: Создание кастомного интервала (например, раз в 5 минут)

WordPress по умолчанию поддерживает hourly, twicedaily и daily, но можно добавить свои интервалы.

Теперь задание my_custom_cron_hook будет выполняться каждые 5 минут.

Как удалить крон-задачу

Чтобы удалить запланированную задачу, используйте wp_unschedule_event():

$timestamp = wp_next_scheduled( 'my_custom_cron_hook' ); if ( $timestamp ) { wp_unschedule_event( $timestamp, 'my_custom_cron_hook' ); }

Этот код удаляет задачу my_custom_cron_hook, если она была запланирована.

Функция wp_schedule_event() позволяет автоматизировать задачи в WordPress, такие как обновление данных, очистка кеша, отправка email и многое другое. Использование кастомных интервалов и хуков делает эту систему гибкой и мощной.

Важно:

  • WordPress Cron не является реальным cron-планировщиком, а срабатывает только при посещениях сайта. Для точного выполнения задач используйте серверный cron job.
  • Проверяйте, не дублируются ли задачи, перед их регистрацией с помощью wp_next_scheduled().
cron