WP-Cron: почему отложенные публикации не выходят и как исправить на хостинге

wp cron otlozhennaya publikaciya cover Без рубрики
Статус "пропущено по расписанию": часовой пояс, визит на главную, WP Crontrol, DISABLE_WP_CRON и текст в поддержку хостинга. Без SSH.

Пост к акции на 9:00, в 9:30 в админке «пропущено по расписанию», на сайте пусто — и страшно трогать wp-config.php. Андрей из доставки обедов в понедельник в 10:00 всё ещё видел меню «запланировано»: ночью на сайт никто не заходил, планировщик не сработал, плюс хостер уже отключил встроенный WP-Cron без замены. Ниже — что проверить сегодня без программиста: часовой пояс, визит на главную, WP Crontrol и текст в поддержку хостинга.

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

Сайт не публикует сам — ждёт визита на страницу. Разберём симптомы, быстрый чеклист и когда нужен гайд по системному cron вместо WP-Cron. К концу дня вы сможете получить предсказуемый результат: тестовая отложенная запись выходит без паники, а очередь в WP Crontrol снова двигается.

Разберите, как WP-Cron запускает отложенные публикации

Схема: визит на сайт запускает очередь задач WordPress и публикацию отложенного поста

Планировщик WordPress (его часто называют WP-Cron) при каждой загрузке страницы смотрит список автозадач по времени. Среди них есть событие publish_future_post — оно и переводит запись из статуса «запланировано» в «опубликовано». Если задача назначена на 14:00, а до 17:00 никто не открыл сайт, выполнение сдвинется на первый визит после 14:00. На малопосещаемом сайте пост к обеду часто «зависает» в списке записей, хотя время в админке уже в прошлом.

Типичная ошибка: считать, что «Запланировать» привязано к часам сервера. На тихом shared-тарифе пост выйдет, когда кто-то откроет главную без админки. Та же очередь тянет бэкапы и письма — зависшая задача плагина задерживает и публикацию.

Ситуация Что видите Что это значит для вас
Регулярный трафик днём Пост выходит в течение 15-30 минут после времени WP-Cron успевает при визитах
Ночь, выходные, «тихий» сайт Статус «пропущено по расписанию» Очередь не запустили до визита
В wp-config стоит DISABLE_WP_CRON Ничего не публикуется часами Нужен вызов wp-cron.php с хостинга
Более 100 запланированных записей Новые не ставятся в очередь Лимит из справки WordPress.com

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

  1. Статус «Запланировано», не черновик; дата в будущем на момент сохранения.
  2. Настройки → Общие → часовой пояс вашего города.
  3. После «пропущено по расписанию» — главная сайта вне админки, через 2-3 минуты обновите записи.
  4. Не больше 100 запланированных материалов одновременно.

На малом трафике публикация обычно в течение 15-30 минут после времени или после визита на сайт. Используйте этот мини-чеклист перед каждой акцией; не делайте массовое «Запланировать» сотнями постов сразу — упрётесь в лимит очереди.

Откройте очередь задач через WP Crontrol

Экран WP Crontrol со списком cron-событий и кнопкой Run now

Если после визита на главную пост всё ещё висит, нужна диагностика за пять минут. Установите бесплатный плагин WP Crontrol из каталога WordPress, откройте Инструменты → Cron Events (или «Запланированные события»). Найдите хук publish_future_post и события с просроченным временем Next Run. В магазинах с WooCommerce загляните и в «Запланированные действия» тяжёлых плагинов — просроченные задачи там иногда блокируют всю очередь, как описывают в тредах wordpress.org про Action Scheduler.

Например, «зависший» хук другого плагина задерживает publish_future_post — так пишут на StackExchange. Run now на тесте покажет, двигается ли очередь; чужие события не удаляйте без скрина для поддержки.

Сделайте быстрый тест визитом и wp-cron.php

Иногда достаточно одного захода на сайт вне панели управления. Альтернатива — один раз открыть в браузере адрес https://ваш-домен.ru/wp-cron.php?doing_wp_cron (пустая страница нормальна). Это тот же вход, который хостинг должен вызывать по расписанию, если встроенный планировщик отключён.

Шаг 1: создайте тестовую запись «на через 20 минут» и не трогайте сайт. Шаг 2: если она не вышла, зафиксируйте скрин WP Crontrol и время — это аргумент для поддержки. Если вышла только после вашего визита — признайте низкий трафик и настройте серверное расписание; пошагово это разобрано в материале про системный cron, без повторения всего чек-листа здесь.

Если в Сервис → Здоровье сайта есть предупреждение про loopback, сайт буквально «не дозванивается» до wp-cron.php. Тогда с хостингом обсуждают ALTERNATE_WP_CRON или PHP-вызов вместо wget — это уже не паника, а конкретный тикет с скрином Site Health.

Найдите DISABLE_WP_CRON и напишите в поддержку хостинга

Фрагмент wp-config с DISABLE_WP_CRON и шаблон cron-задания на wp-cron.php

В wp-config.php ищите define(‘DISABLE_WP_CRON’, true); — часто ставит хостер. Без задания в панели отложенные записи перестают выходить; прямой вызов wp-cron.php по URL при этом возможен. Сначала задание на хостинге, потом отключение встроенного cron (Kinsta, WPShop).

*Instagram,Facebook (принадлежит компании Meta, признанной экстремистской и запрещённой на территории РФ)

Текст в тикет: добавьте wget/curl на https://мой-домен.ru/wp-cron.php?doing_wp_cron каждые 5-15 минут; в wp-config уже DISABLE_WP_CRON. Расписание */15 * * * * — из документации WordPress.

Если править файлы страшно — опишите симптом в форме на сайте (MAX, VK, WhatsApp, Telegram), без звонков. При сопровождении WordPress мы проверяем расписание и контент вместе — см. услуги по сайту и статьям.

Убедитесь, что следующая акция выйдет по плану

Ориентир результата за вечер: тест «запланировано» выходит в 15-30 минут после времени или после визита; «пропущено» не висит вечно; publish_future_post уходит в WP Crontrol; при DISABLE_WP_CRON вы настроите задание на хостинге и исправите срыв без программиста.

  1. Тест через 10-15 минут, часовой пояс зафиксирован.
  2. Не дёргайте сайт каждую минуту.
  3. Статус «опубликовано», дата по плану.
  4. Next Run в Crontrol не в прошлом месяце.
  5. Сверьте автобэкап и кеш с расписанием.

WP Missed Schedule — запасной костыль на разовый срыв; для регулярных постов см. планирование публикаций.

Избегите типичных ошибок после «исправления»

  • Отключили встроенный WP-Cron без серверного задания — письма, бэкапы и посты встают без красной ошибки.
  • Хостинг блокирует wget с basic auth или режет loopback — cron «настроен», а задачи стоят; смотрите Здоровье сайта.
  • Кэш отдаёт wp-cron.php без PHP — см. настройки кеш-плагина и исключения URL.
  • Два одинаковых cron-задания каждую минуту — лишняя нагрузка; достаточно 5-15 минут.
  • Паника из-за Missed Schedule на минуту — часто исчезает после следующего визита, как пишут на StackExchange.

Когда очередь снова живая, имеет смысл сверить соседние настройки: Heartbeat в админке снижает лишние запросы, а свежие гайды по WordPress собраны в разделе статей.

Материал проверен Андрей Дикий — практика WordPress, SEO/GEO для малого бизнеса.
На что опирались: developer.wordpress.org (WP-Cron), wordpress.com/ru/support/schedule-a-post-or-page/, wpshop.ru (cron-not-working), kinsta.com (disable-wp-cron), WP Crontrol, StackExchange; LSI по SERP 2026-09-22 (Вордстат MCP недоступен).

Частые вопросы

Почему не публикуется отложенный пост в WordPress?

Чаще всего WP-Cron не запустился: на сайт не заходили после назначенного времени, неверный часовой пояс, черновик вместо «Запланировать» или в wp-config отключён встроенный планировщик без задания на хостинге. Сначала визит на главную и проверка часового пояса, затем WP Crontrol.

Что делать, если запланированная публикация пропущена?

Откройте сайт вне админки, подождите 2-3 минуты и обновите список записей. Если статус не сменился — WP Crontrol, Run now на тесте, проверка DISABLE_WP_CRON и письмо в поддержку с просьбой вызывать wp-cron.php каждые 5-15 минут.

Как проверить wp cron в WordPress без SSH?

Установите WP Crontrol, откройте Cron Events, найдите publish_future_post и просроченные Next Run. Ручной Run now показывает, жива ли очередь. Дополнительно один раз откройте wp-cron.php?doing_wp_cron в браузере.

Чем WP-Cron отличается от cron на хостинге?

WP-Cron привязан к визитам на сайт — как официант, который приносит счёт, когда гость зашёл. Cron на хостинге — будильник сервера: дергает wp-cron.php по расписанию, даже если никто не открывал страницы. Подробная настройка — в отдельной статье про системный cron.

Как часто вызывать wp-cron.php через задание хостинга?

Обычно каждые 5-15 минут: в cron это */5 или */15 * * * *. Реже — дольше ждёте публикацию акции; каждую минуту на дешёвом shared-тарифе часто упираетесь в лимиты CPU.

Нужно ли ставить плагин WP Missed Schedule?

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

Мешает ли кэш или режим обслуживания?

Да. Агрессивный кэш может не пропускать PHP к wp-cron.php, режим обслуживания режет визиты — очередь не стартует. Проверьте исключения URL в кеш-плагине и отключите maintenance на время теста отложенной записи.

*Instagram,Facebook (принадлежит компании Meta, признанной экстремистской и запрещённой на территории РФ)
Новый маркетинг с искусственным интеллектом
Добавить комментарий