Зачем нужно добавлять задачи в крон?
Приведу пример:
У вас есть интернет магазин и вы хотите ежедневно получать отчет о прибыли. Для этого следует создать функцию формирования отчета и добавить ее в список заданий, выполняемых по расписанию.
Для того, чтобы добавить задание в крон необходимо:
- Создать функцию, которая будет вызываться по расписанию;
- Зарегистрировать задание;
- Добавить вызов функции по зарегистрированному заданию.
По сути мы создаем хук, по которому будем осуществлять вызов своей функции. Этот хук отличается от обычного тем, что будет вызываться с указанной регулярностью.
Пример кода:
/**
* Функция, которую надо выполнять по крону.
*
* @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 работают так: при запуске системы(пользователь зашел на сайт) идет проверка — пора ли выполнять задание и если время вызова равно или позже указанного в расписании, задача выполняется.
Отсюда следует вывод о том, что ваше задание не будет выполнено, если на сайт никто не зайдет.
Чтобы избежать пропуск выполнения задания, нужно поставить задачу серверному крону на запуск системы.