#Суть неисправности и признаки
В списке записей WordPress возле запланированной публикации появляется отметка «Пропущена запланированная публикация» (Missed Schedule), а статья остаётся недоступной читателям после назначенного времени. WordPress использует механизм WP-Cron, который не равен постоянному системному планировщику Linux. Сначала проверьте время и точность расписания, затем работу внутренних запросов WordPress и только после этого — настройку cron на сервере. Системный cron следует включать до установки DISABLE_WP_CRON, иначе события перестанут запускаться.
#Почему возникает проблема
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| WP-Cron не запускается своевременноОбычно запуск плановых событий инициируется при обращениях к сайту; редкое посещение и проблемы петлевых запросов задерживают работу. | Просрочены сразу несколько задач, а после посещения сайта часть запускается. | Проверить петлевые запросы и при необходимости подключить системное расписание. |
| Отключён WP-Cron без заменыВ wp-config.php стоит DISABLE_WP_CRON=true, но внешний планировщик не настроен или запускает неверный сайт. | События не выполняются независимо от посещений; в журнале cron нет успешных запусков. | Настроить рабочий cron и лишь затем отключать запуск по посещениям. |
| Неверный часовой поясЧасовой пояс WordPress отличается от предполагаемого времени автора. | В редакторе запланированная дата не совпадает с местным временем. | Проверить «Настройки» → «Общие» → «Часовой пояс». |
| Ошибка плагина/фоновой задачиPHP-фатальная ошибка или блокировка loopback прерывают механизм планирования. | В «Здоровье сайта» указана ошибка петлевого запроса или журнала PHP. | Найти ошибку по времени и исправить конкретное расширение. |
#Пошаговая диагностика и устранение
- Сохраните содержимое записи и время публикацииОткройте «Записи» → «Все записи», отфильтруйте по запланированным и запишите название проблемного материала, дату и отметку «Пропущена...». Откройте запись и убедитесь, что её текст сохранён. Прежде чем менять время или статус, сделайте копию базы данных: ручная публикация меняет URL доступности и может отправить уведомления читателям.
- Сверьте часовой пояс и статусОткройте «Настройки» → «Общие», найдите поле «Часовой пояс» и убедитесь, что выбран правильный город или смещение. Затем вернитесь к записи и проверьте календарь публикации. Если назначенная дата на самом деле ещё не наступила в часовом поясе сайта, ошибки планировщика нет. Изменяя пояс рабочего сайта, учтите влияние на все будущие задачи и запишите старое значение для отката.
- Проверьте Здоровье сайта и ошибки loopbackВ админке WordPress перейдите «Инструменты» → «Здоровье сайта» → «Состояние». Найдите замечания о планируемых событиях и петлевом запросе. Если отображается ошибка HTTP 401/403/5xx, запишите её; это важнее, чем случайная замена расписания. Петлевой запрос использует обращение WordPress к собственному сайту и может зависеть от DNS, TLS и правил авторизации.
- Посмотрите настройку DISABLE_WP_CRONЧерез панель файлов или SFTP найдите wp-config.php, откройте только для чтения и поищите DISABLE_WP_CRON. Если установлено true, посетители не запускают обычный WP-Cron; выясните в панели хостинга, создана ли системная задача для этого сайта и успешны ли её последние запуски. Не удаляйте константу вслепую и не создавайте второй планировщик с частыми дублирующими запросами.
- Если есть WP-CLI, протестируйте запускПод владельцем сайта в SSH перейдите в каталог с wp-config.php, убедитесь, что команда wp доступна, затем выполните
wp cron test. Ожидается Success либо диагностическое сообщение. Отсутствие WP-CLI не означает неисправность WordPress: попросите хостинг проверить cron. Если тест не прошёл, сначала разберите указанную ошибку, не запускайте сразу все просроченные события на рабочем сайте. - Исправьте обнаруженную помехуЕсли диагностика указала на HTTP-ошибку, проверьте правила доступа и петлевые запросы по времени в журналах; если cron отключён, настройте его через «Задания по расписанию» панели хостинга для корректного веб-пути или WP-CLI, после согласования с администратором. Укажите реальный путь и частоту, соответствующую задачам сайта. Проверяйте журналы исполнения: пустая строка журнала не подтверждает успешную публикацию.
- Проверьте одиночное запланированное событиеСоздайте тестовую запись без рассылки подписчикам, выберите в редакторе время публикации на несколько минут позже текущего. Дождитесь наступления времени и обновите список записей: статус должен измениться на «Опубликовано», а адрес записи открываться без авторизации. Если задача срабатывает только после визита на сайт, проблема относится к механизму запуска WP-Cron и решается правильной системной задачей.
- Восстановите пропущенную публикацию и отслеживайте результатКогда причина устранена, вручную опубликуйте просроченную запись только с согласия автора либо запустите одно нужное событие с помощью WP-CLI после проверки его назначения. Не запускайте все просроченные задания массово: среди них могут быть рассылки, платежи и очистки. Зафиксируйте следующий контрольный запуск и верните любые временно изменённые настройки часового пояса.
- Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
#Как проверить результат и что делать, если не помогло
Успех: контрольная запись публикуется в назначенный момент без ручного открытия страницы, а новые просроченные события не накапливаются. Если cron тестируется успешно, но конкретная публикация не выходит, ищите PHP-ошибку соответствующего обработчика и конфликт дополнения. При отключённом системном расписании верните прежнюю константу только после понимания, что именно будет запускать плановые события.