WP-Cron запускается при посещениях. На тихом сайте задачи задерживаются, а на нагруженном несколько запросов могут одновременно пытаться стартовать очередь. Предсказуемее вызывать её системным cron.
Настройка
Добавьте в wp-config.php до строки остановки редактирования:
define('DISABLE_WP_CRON', true);
Проверьте список задач:
wp cron event list --fields=hook,next_run,next_run_relative,recurrence
wp cron test
Создайте системную задачу от пользователя, которому принадлежат файлы WordPress:
*/5 * * * * cd /var/www/site && /usr/local/bin/wp cron event run --due-now --quiet >> /var/log/wp-cron.log 2>&1
Для Docker запускайте WP-CLI внутри существующего контейнера или выделенного service с теми же volume и сетью. Не вызывайте публичный wp-cron.php через curl, если доступен надёжный CLI.
Проверка
Запланируйте безопасное тестовое событие или дождитесь обычного. Сравните next_run, журнал cron и вывод wp cron event list. Убедитесь, что системная задача действительно работает от нужного пользователя и видит правильный wp-config.php.
Не ставьте интервал в минуту без необходимости: тяжёлая задача может запуститься повторно. Для долгих обработчиков используйте блокировку внутри плагина или отдельную очередь.
Официальные источники