Что такое WP-Cron и зачем его отключают
В WordPress WP-Cron отвечает за запуск запланированных задач: публикацию отложенных постов, очистку временных данных, обновления и многое другое. Однако у WP-Cron есть ограничение — он запускается только при обращении к сайту, из-за чего на сайтах с низкой посещаемостью задачи могут не выполняться вовремя. Поэтому иногда WP-Cron отключают в wp-config.php и заменяют системным cron'ом для надежности.
Диагностика проблем после отключения WP-Cron
После добавления в wp-config.php строки define('DISABLE_WP_CRON', true); некоторые задачи могут перестать выполняться. Чтобы проверить, работает ли система планировщика, выполните следующие шаги:
- Проверьте наличие запланированных задач через плагин WP Crontrol.
- Запустите вручную системный cron (если настроен) и проверьте логи сервера.
- Проверьте запланированные задачи в базе данных в таблице
wp_optionsс ключомcron.
Пример проверки задач через WP-CLI
wp cron event listЕсли список пуст или задачи не запускаются, причина в отключении WP-Cron без настройки системного cron.
Пошаговое решение: как правильно отключить WP-Cron и настроить системный cron
1. Отключаем WP-Cron
define('DISABLE_WP_CRON', true); // В файле wp-config.php перед строкой /* That's all, stop editing! */2. Настраиваем системный cron на сервере
Выполните команду для редактирования crontab (на Unix-серверах):
crontab -eДобавьте задачу, которая будет запускать WP-Cron каждые 5 минут:
*/5 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1Или используйте curl:
*/5 * * * * curl --silent https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1Замените https://example.com на URL вашего сайта.
3. Проверяем работу
- Через WP-CLI проверяем список запланированных задач.
- Имитируем запуск cron вручную:
wp cron event run --due-now - Проверяем логи сервера на наличие ошибок.
Как проверить, что решение сработало
- Отложенные публикации выходят в запланированное время.
- Плагины, зависящие от cron-задач (например, Clearfy Pro для очистки), выполняют свои функции.
- Время последнего запуска cron в базе данных обновляется (можно проверить через WP Crontrol).
Частые ошибки при отключении WP-Cron и их исправление
- Ошибка: Добавлена строка
define('DISABLE_WP_CRON', true);, но системный cron не настроен.
Решение: Настроить системный cron, как описано выше. - Ошибка: Использование HTTP вместо HTTPS в cron-запросе, если сайт работает на HTTPS.
Решение: Используйте корректный протокол в URL. - Ошибка: Сервер блокирует запросы к
wp-cron.php(например, firewall или правила .htaccess).
Решение: Проверьте настройки firewall и .htaccess, добавьте исключения дляwp-cron.php. - Ошибка: Cron-запрос выполняется с ошибками из-за необходимости аутентификации или редиректов.
Решение: Убедитесь, что запросы кwp-cron.phpдоступны без авторизации и корректно обрабатываются сервером.
Практические советы по безопасности и производительности
- Используйте системный cron вместо WP-Cron на продакшен-сайтах с высокой нагрузкой.
- Не ставьте cron с интервалом менее 5 минут, чтобы не создавать лишнюю нагрузку.
- Если на сайте много задач, рассмотрите использование плагинов для управления очередью cron (например, WP Crontrol).
- Отключайте WP-Cron только после тщательной проверки и настройки системного cron.
Сравнение вариантов запуска cron в WordPress
| Метод | Плюсы | Минусы |
|---|---|---|
| WP-Cron (по умолчанию) | Простая настройка, работает сразу | Зависит от посещаемости сайта, нерегулярные запуски |
| Отключение WP-Cron + системный cron | Надежный запуск, подходит для сайтов с низкой посещаемостью | Требует доступа к серверу и навыков настройки cron |
| Плагины для управления cron | Удобный интерфейс, контроль задач | Дополнительная нагрузка, возможные конфликты |