Как использовать WP-Cron для автоматических задач в WordPress

Что такое WP-Cron и зачем он нужен

WP-Cron — это система планировщика задач в WordPress, которая позволяет запускать запланированные события, например, публикацию отложенных постов, очистку кеша, отправку писем и другие автоматические процедуры без необходимости настраивать системный cron на сервере.

Диагностика проблем с WP-Cron

Основные признаки неправильной работы WP-Cron:

  • Отложенные посты не публикуются вовремя;
  • Не запускаются задачи автоматического обновления плагинов или очистки;
  • Задачи, завязанные на WP-Cron, выполняются с задержкой или не выполняются вовсе.

Проверить, вызывается ли WP-Cron, можно добавив в wp-config.php следующий код:

define('DISABLE_WP_CRON', true);

Если задачи перестали выполняться — значит, WP-Cron действительно отключен. Также можно посмотреть логи сервера на предмет ошибок при обращении к wp-cron.php.

Как настроить WP-Cron для надёжной работы

Отключение встроенного WP-Cron и настройка системного cron

WP-Cron запускается при каждом запросе к сайту, что не всегда удобно и надёжно. Для сайтов с низкой посещаемостью или высокими требованиями к точности задач рекомендуем отключить встроенный WP-Cron и настроить системный cron-запуск.

  1. В wp-config.php добавьте:
define('DISABLE_WP_CRON', true);
  1. Настройте системный cron (для Linux-сервера):
* * * * * wget -q -O - https://ваш-сайт.ru/wp-cron.php?doing_wp_cron > /dev/null 2>&1
<

Этот вызов будет запускать WP-Cron каждую минуту.

Регистрация пользовательских событий в WP-Cron

Для создания своих планировщиков используйте следующие шаги:

function my_custom_cron_schedule($schedules) {
    if (!isset($schedules['every_five_minutes'])) {
        $schedules['every_five_minutes'] = array(
            'interval' => 300, // 5 минут в секундах
            'display'  => 'Каждые 5 минут'
        );
    }
    return $schedules;
}
add_filter('cron_schedules', 'my_custom_cron_schedule');

function my_custom_cron_task() {
    // Ваш код, который должен выполняться по расписанию
    error_log('Моя задача WP-Cron выполнена: ' . date('Y-m-d H:i:s'));
}

if (!wp_next_scheduled('my_custom_cron_hook')) {
    wp_schedule_event(time(), 'every_five_minutes', 'my_custom_cron_hook');
}
add_action('my_custom_cron_hook', 'my_custom_cron_task');

Проверка результата после настройки

Для проверки выполненных задач:

  • Используйте плагины, например, WP Crontrol, чтобы просмотреть и управлять запланированными задачами.
  • Проверьте логи сервера или журнал ошибок PHP, в нашем примере будет запись в error_log.
  • Проверьте, выполняются ли отложенные задачи сайта своевременно.

Частые ошибки и их исправление

  • DISABLE_WP_CRON установлен, но системный cron не настроен
    Задачи не выполняются вовсе. Решение: добавить системный cron или убрать константу.
  • Конфликты с плагинами, которые отключают WP-Cron
    Проверяйте плагины, связанные с кешированием и оптимизацией, иногда они блокируют вызовы wp-cron.php.
  • Неправильный URL в системном cron
    Убедитесь, что URL wp-cron.php?doing_wp_cron корректен и доступен с сервера.
  • Ошибки в пользовательских задачах
    Если ваш код вызывает фатальные ошибки, задача не выполнится. Логируйте ошибки и тестируйте код отдельно.

Практические советы по безопасности и производительности

  • Ограничьте доступ к wp-cron.php с помощью .htaccess или конфигурации сервера, чтобы запросы могли делать только локальные процессы.
  • Минимизируйте время выполнения задач — тяжелые операции выносите в отдельные скрипты, вызываемые по cron, чтобы не блокировать сайт.
  • Используйте специализированные плагины для управления cron, например, WP Crontrol, если нужно удобное UI для админов.
  • Для высоконагруженных сайтов лучше полностью отказаться от WP-Cron и настроить системный cron с подходящим интервалом.

Сравнение способов запуска WP-Cron

СпособПлюсыМинусыКогда использовать
Встроенный WP-CronПрост в настройке, работает сразу из коробкиЗависит от посещаемости сайта, может запускаться с задержкамиНизкая нагрузка, не критичные задачи
Системный cron с отключенным WP-CronТочный запуск, стабильная работаТребует доступа к серверу, настройка cronВысоконагруженные сайты, критичные задачи
WooCommerce: сокращение времени загрузки страниц корзины
22.05.2026
Как создать собственный виджет в WordPress с примером кода
17.11.2025
WooCommerce: автоматическое удаление неактивных пользователей с заказами
12.05.2026
Как использовать REST API в WordPress для расширения функциональности
10.11.2025
Автоматический импорт товаров из CSV в WooCommerce: пошаговое руководство
31.03.2026