Настройка задания в WordPress (WP Cron) для выполнения в назначенный интервал
Чтобы настроить задание в WordPress (WP Cron) для выполнения , например, раз в сутки в 3 часа ночи нужно создать собственное событие cron. Вот пример кода, который нужно добавить в файл functions.php:
/ Регистрация события cron при активации темы или плагина function my_activation() { if (!wp_next_scheduled('my_daily_event')) { // Запланировать первый запуск на 3:00 следующего дня $timestamp = strtotime('tomorrow 3:00') - (get_option('gmt_offset') * HOUR_IN_SECONDS); wp_schedule_event($timestamp, 'daily', 'my_daily_event'); } } register_activation_hook(__FILE__, 'my_activation'); // Удаление события при деактивации темы или плагина function my_deactivation() { wp_clear_scheduled_hook('my_daily_event'); } register_deactivation_hook(__FILE__, 'my_deactivation'); // Добавление обработчика для вашего события add_action('my_daily_event', 'do_this_daily'); // Функция, которая будет выполняться ежедневно function do_this_daily() { // Ваш код здесь. Этот код будет выполняться ежедневно в 3 часа ночи. }
Убедитесь, что вы замените ‘my_daily_event’ и ‘do_this_daily’ на более описательные имена, которые соответствуют функционалу, который вы хотите выполнить.
Функция wp_schedule_event принимает время в формате Unix timestamp. В приведенном выше коде расчет времени выполнения учитывает смещение времени WordPress (gmt_offset), чтобы правильно настроить время выполнения на 3:00 по местному времени.
Этот код следует добавить в функциональный плагин или файл functions.php темы. Если вы добавляете код непосредственно в тему, помните, что при смене темы код будет удален или неактивен.
Не забудьте активировать свою тему или плагин после добавления этого кода, чтобы register_activation_hook мог запланировать событие. Если вы обновляете существующую функцию, возможно, вам придется временно деактивировать и снова активировать плагин (или тему), чтобы обеспечить правильное планирование событий.
Обратите внимание, что WP Cron полагается на посещаемость сайта для активации событий. Если ваш сайт имеет низкую посещаемость, особенно в ночное время, выполнение задачи в точно запланированное время может быть не гарантировано. В таких случаях рассмотрите возможность использования реальной системы cron на сервере, которая может вызывать wp-cron.php через wget или curl.