Рубрики
Wordpress

Добавление задачи в Cron в WordPress

Зачем нужно добавлять задачи в крон?

Приведу пример:

У вас есть интернет магазин и вы хотите ежедневно получать отчет о прибыли. Для этого следует создать функцию формирования отчета и добавить ее в список заданий, выполняемых по расписанию.

Для того, чтобы добавить задание в крон необходимо:

  • Создать функцию, которая будет вызываться по расписанию;
  • Зарегистрировать задание;
  • Добавить вызов функции по зарегистрированному заданию.

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

Пример кода:

/**
 * Функция, которую надо выполнять по крону.
 * 
 * @return void
 */
function regular_event()
{
  // do some regular things
}

/**
 * Добавление задания в крон.
 * 
 * @return void
 */
function addCronEvent()
{
// добавление в крон импорт банковских транзакций
    if ( ! wp_next_scheduled('cron_event_name')) {
        wp_schedule_event(time(), 'daily', 'cron_event_name');
    }
}

// запускаем функцию добавления задания в крон
add_action('init','addCronEvent');
// создаем экшн на хук, который был добавлен с помощью wp_schedule_event
add_action('cron_event_name', 'regular_event');

Следует помнить о том, как работает cron, читать об этом тут.

что задания WordPress работают так: при запуске системы(пользователь зашел на сайт) идет проверка — пора ли выполнять задание и если время вызова равно или позже указанного в расписании, задача выполняется.

Отсюда следует вывод о том, что ваше задание не будет выполнено, если на сайт никто не зайдет.

Чтобы избежать пропуск выполнения задания, нужно поставить задачу серверному крону на запуск системы.