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

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

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

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

Часто WP-Cron не работает как ожидается, если на сайте низкий трафик или сервер блокирует внутренние HTTP-запросы. Чтобы проверить, работает ли WP-Cron:

  • Включите отладку WP-Cron, добавив в wp-config.php:
define('ALTERNATE_WP_CRON', true);
  • Используйте плагин WP Crontrol для просмотра и запуска задач вручную.
  • Проверьте логи сервера на предмет ошибок связанных с /wp-cron.php.
  • Выполните вручную запрос к https://example.com/wp-cron.php?doing_wp_cron и посмотрите, есть ли ответ без ошибок.

Пошаговое решение: как настроить системный cron для замены WP-Cron

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

  1. Отключите стандартный WP-Cron, добавив в wp-config.php:
define('DISABLE_WP_CRON', true);
  1. Создайте задание в системном cron (например, на Linux сервере через crontab):
* * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Эта команда запускает wp-cron.php каждую минуту, обеспечивая своевременное выполнение задач.

Пример кастомной задачи для WP-Cron

Чтобы добавить свою задачу, используйте следующий код в functions.php или в плагине:

function my_custom_cron_job() {
    // Ваш код, например, очистка временных данных
    error_log('Custom cron job executed at ' . current_time('mysql'));
}

add_action('my_custom_cron_hook', 'my_custom_cron_job');

// Запланировать событие, если оно ещё не запланировано
if (! wp_next_scheduled('my_custom_cron_hook')) {
    wp_schedule_event(time(), 'hourly', 'my_custom_cron_hook');
}

Этот код создаст задачу, которая будет запускаться каждый час и записывать событие в лог.

Как проверить, что WP-Cron работает корректно

  • Установите плагин WP Crontrol и убедитесь, что задачи отображаются и выполняются.
  • Проверьте файл логов, если используете error_log для отладки своих задач.
  • Проверьте, что системный cron запускается — скрипт wp-cron.php должен вызываться по расписанию, без зависимости от посещений сайта.

Частые ошибки при работе с WP-Cron и как их исправить

  • Задачи не выполняются при низком трафике: Решение — отключить WP-Cron и настроить системный cron.
  • HTTP-запросы к wp-cron.php блокируются сервером: Проверьте настройки firewall и .htaccess. Убедитесь, что локальные запросы не блокируются.
  • Дублирование или пропуск заданий: Используйте wp_next_scheduled() для проверки, чтобы не создавать одинаковые задачи.

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

  • Не запускайте тяжелые задачи слишком часто — это может замедлить сайт.
  • Проверяйте и очищайте устаревшие задачи из расписания, чтобы не перегружать систему.
  • Используйте системный cron вместо WP-Cron для стабильной работы на продуктивных сайтах.
  • Ограничьте доступ к wp-cron.php по IP, если возможно, чтобы избежать злоупотреблений.

Сравнение вариантов запуска cron-задач в WordPress

МетодПлюсыМинусы
Стандартный WP-CronПростота настройки, не требует доступа к серверуЗапускается только при посещении сайта, нестабильность при низком трафике
Системный cronНадёжность, точное расписание, не зависит от посещенийТребует доступа к серверу и базовых знаний Linux
Плагины для управления cron (например, WP Crontrol)Удобный интерфейс для просмотра и управления задачамиНе решает проблему стабильности запуска, зависит от WP-Cron
WooCommerce: как автоматически удалять заказы по статусу
22.07.2026
Как создать динамический фильтр записей в WordPress без плагинов
28.12.2025
Как создать и настроить круговое меню в WordPress без плагинов
04.01.2026
Как решить проблему нерабочих изображений в WordPress после переездов сайта
26.03.2026
Как отключить e-mail уведомления от автоматических сообщений WordPress
22.02.2026