Встроенный сron в WordPress

Порой бывает необходимо выполнять какие-то действия периодический, например рассылка или какая-нибудь обработка данных. Хорошо если есть доступ к Cron-у на сервер, но если его нет, то можно использовать встроенный в WordPress. Осталось разобраться как собственно прицепится к нему.

Главная функция, которая собственно цепляется за cron, выглядит так:

Разберёмся с параметрами:

  1. $timestamp - когда запустить cron, необходимо указать время в Unix-формате, если с текущего момента, то просто time()
  2. $recurrence - как часто запускать, по умолчанию доступны 3 варианта:
    • hourly - раз в час
    • twicedaily - каждые 12 часов
    • daily - раз в день

    так же можно добавить свои варианты, но об этом позже

  3. $hook - собственно название нашего cron-а, можно придумать любое, оно служит для идентификации для других функций
  4. $args  - аргументы, которые будут передаваться нашей запускаемой функции (не обязательный параметр)

Для примера буду использовать активацию плагина, т.к. внутренний cron как раз используется в основном в плагинах.

В данном примере, после активации плагина, будет запускаться функция funct_hourly (мы повесили её с помощью функции add_action на идентификатор cron-а), которая в свою очередь будет отправлять письмо с уведомлением о запуске. Обратите внимание на функцию wp_next_scheduled, она проверяет был ли запущен подобный cron или нет, иначе при каждой активации вы будете получать новый дубль cron-а. Так что в данном случае, если функцию проверки убрать и активировать плагин 3 раза, вы будете получать по 3 письма каждый час.

С включением крона разобрались, теперь осталось научиться его отключать. Для этого используется следующая функция:

Параметры:

  1. $timestamp - время, когда крон будет запущен в следующий раз
  2. $hook - название нашего cron-а

Пример отключения при деактивации плагина:

С помощью функции wp_next_scheduled мы получаем время, когда будет запущен в очередной раз наш cron, а потом передаём в функцию деактивации. Так же можно отключить все запланированные ранее кроны с помощью функции wp_clear_scheduled_hook(). Она основана на функции wp_unschedule_event() и вызывается так:

Ну и напоследок расскажу как задавать свои интервалы времени:

Мы указали свою функцию cron_add_new, которая передаёт параметры для нового интервала. Здесь всё просто: указываем interval в количестве секунд, а так же display - это просто описание. Таким образом вы можете задать любой удобный для вас интервал.

Добавить комментарий

Ваш e-mail не будет опубликован.