Отложенная запись висит «пропущено по расписанию», письма с формы не уходят, хостинг пишет «всё работает». Марина ждала пост про акцию на субботу 10:00 — в 11:00 он всё ещё «ожидает публикации». Встроенный WP-Cron запускает задачи только когда кто-то заходит на сайт. Решение: системный cron на хостинге раз в 15 минут вызывает wp-cron.php, потом отключаете автозапуск при визите. Без SSH, через панель хостинга — за один вечер.
Встроенный WP-Cron ждёт посетителя: задача на 14:00 может выполниться только вечером, когда кто-то откроет сайт. Системный cron — расписание на сервере: каждые 15 минут команда wget или curl дергает wp-cron.php. Сначала настройте задание на хостинге и проверьте его, потом добавьте в wp-config.php строку define(‘DISABLE_WP_CRON’, true). Константа не «убивает» cron — она лишь запрещает запуск при загрузке страницы; прямой вызов wp-cron.php продолжает работать.
Cron — это «будильник сервера»: таблица, когда запускать фоновые задачи сайта. Ниже — симптомы, порядок шагов для Beget, cPanel, Timeweb, проверка через WP Crontrol и что делать, если мешает кэш.
- Узнайте, нужен ли вам системный cron
- Подготовьте бэкап и найдите раздел Cron в панели
- Добавьте задание на хостинге — шаг 1
- Отключите WP-Cron в wp-config.php — шаг 2
- Проверьте, что отложенная запись и письма снова работают
- Разберите поломки, если cron «настроен», а задачи стоят
- Что дальше
- Частые вопросы
- Чем системный cron отличается от WP-Cron?
- Как отключить wp cron в WordPress безопасно?
- Что будет, если отключить WP-Cron без замены?
- Как часто запускать wp-cron.php через cron?
- Нужен ли SSH для настройки?
- Нужен ли плагин WP Crontrol после переключения?
- Сломаются ли автообновления плагинов?
Узнайте, нужен ли вам системный cron

Не каждому сайту нужна замена сразу. Но если узнаёте себя в списке — откладывать опасно: задачи копятся тихо, без красной ошибки на экране.
- Статус «пропущено по расписанию» (Missed schedule) у отложенных записей.
- Формы и письма уходят с задержкой в часы, а не минуты.
- Бэкапы плагина «висят» или не создаются ночью.
- Сайт медленный при малом трафике — WP-Cron дёргает PHP при каждом заходе.
- Стоит агрессивный кэш: страницы отдаются без PHP, и встроенный планировщик не просыпается.
Оставить как есть можно, если трафик постоянный и нет отложенных публикаций. У салона утром заходов мало — пост к обеду часто зависает.
| Критерий | Встроенный WP-Cron | Системный cron на хостинге |
|---|---|---|
| Когда срабатывает | При заходе на сайт (или в админку) | По расписанию сервера, без посетителей |
| Отложенный пост на 10:00 | Может выйти только когда кто-то зайдёт позже | Обычно в течение 15-20 минут после времени |
| Нагрузка на shared-хостинг | PHP при каждом визите | Один короткий запрос раз в 15 минут |
| Нужна панель хостинга | Нет | Да, раздел Cron или Планировщик |
Подготовьте бэкап и найдите раздел Cron в панели

Главный страх — «сломаю wp-config.php». Типичная ошибка — править файл без копии. Сделайте так:
- Скачайте копию wp-config.php через файловый менеджер хостинга или FTP.
- Установите бесплатный плагин WP Crontrol из каталога WordPress — он покажет список задач до и после настройки.
- Откройте панель хостинга и найдите раздел: у Beget и Timeweb это часто «Cron», у cPanel — «Cron Jobs», у NetAngels — «Планировщик заданий».
- Запишите полный адрес сайта с https и, если раздела cron нет на тарифе, попросите поддержку завести задание раз в 15 минут на wp-cron.php.
Типичная ошибка: ищут cron в WordPress, а он только в панели хостинга.
Добавьте задание на хостинге — шаг 1

Ключевой порядок из официальной документации WordPress: сначала серверное расписание, потом отключение встроенного планировщика. Если сделать наоборот — письма, бэкапы и отложенные посты просто перестанут выполняться, без сообщения об ошибке.
Расписание «каждые 15 минут» в cron записывается так: */15 * * * *. На shared-хостинге не ставьте каждую минуту — провайдер режет CPU. Интервал 15 минут — баланс между скоростью публикации и лимитами тарифа.
Пример для cPanel и большинства панелей (подставьте свой домен):
wget -q -O /dev/null https://ваш-домен.ru/wp-cron.php?doing_wp_cron
Альтернатива — curl. На NetAngels иногда удобнее PHP-путь — его даёт поддержка.
| Способ вызова | Когда выбрать | Нюанс для новичка |
|---|---|---|
| wget на URL | cPanel, Beget, Timeweb без SSH | Обязательно https и ?doing_wp_cron в конце |
| curl на URL | Если wget недоступен | Тот же URL, флаг -s для «тихого» режима |
| php /путь/wp-cron.php | Когда хостинг рекомендует PHP-CLI | Точный путь к файлу — у поддержки |
После сохранения подождите 15-20 минут или один раз откройте wp-cron.php?doing_wp_cron в браузере — пустая страница нормальна. В WP Crontrol проверьте даты событий.
Отключите WP-Cron в wp-config.php — шаг 2
Только когда убедились, что задание на хостинге реально срабатывает, открывайте wp-config.php. Одна строка перед комментарием «That’s all, stop editing»:
define(‘DISABLE_WP_CRON’, true);
Сайт откроется как раньше — меняется лишь способ запуска фоновых задач. Встроенный cron больше не будет нагружать каждую страницу. Если после правки всё пропало — верните false или удалите строку и снова проверьте cron на хостинге: часто забывают второй шаг, а не ломают файл.
На Habr Q&A кэш-плагин блокировал WP-Cron — помогла связка DISABLE_WP_CRON и wget каждые 15 минут. Подробнее: кеширование WordPress.
Проверьте, что отложенная запись и письма снова работают
Результат, который вы получите за вечер, простой: в панели хостинга есть одно cron-задание раз в 15 минут; в wp-config стоит DISABLE_WP_CRON; тестовая отложенная запись выходит в течение 15-20 минут после времени; в WP Crontrol события не копятся месяцами.
Порядок проверки: создать черновик с публикацией через 5 минут → дождаться 15-20 минут → статус «опубликовано» → в WP Crontrol свежая дата у wp_scheduled_delete и связанных задач → тест формы или бэкапа по расписанию
- В админке создайте тестовую запись и поставьте время публикации на ближайшие 5-10 минут.
- Не заходите на главную сайта каждую минуту — пусть сработает именно серверный cron.
- Через 15-20 минут обновите список записей: статус должен смениться на «опубликовано».
- WP Crontrol → Cron Events: у событий обновилась колонка «Next Run» / последний запуск.
- Если есть плагин бэкапа или форма — проверьте, что ночной бэкап или тестовое письмо дошли.
У Марины следующий пост вышел в 10:12 — задержка в пределах 15 минут cron.
Разберите поломки, если cron «настроен», а задачи стоят
Часто ломается не WordPress, а порядок действий или окружение:
- Отключили WP-Cron, но не добавили задание — тихая остановка писем и бэкапов.
- В команде http вместо https или опечатка в домене — wget бьётся в пустоту.
- Кэш или CDN отдаёт wp-cron.php без PHP — см. конфликт с кешированием.
- Тяжёлые задачи плагинов «съедают» очередь — в WP Crontrol видно зависшие события.
- Два одинаковых cron-задания — двойной запуск; оставьте одно на 15 минут.
Если править wp-config.php страшно или панель хостинга непонятна — не мучайте сайт экспериментами. Напишите в форму на сайте (MAX, VK, WhatsApp, Telegram) или в канал Telegram: опишите хостинг и симптом, без звонков. Мы настраиваем cron при создании и сопровождении сайтов на WordPress.
Что дальше
Когда системный cron работает, имеет смысл навести порядок в соседних «фоновых» настройках — они тоже бьют по расписанию и нагрузке:
- Автообновление плагинов — чтобы обновления не падали на пиковые часы.
- Heartbeat в админке — меньше лишних запросов к серверу.
- Другие гайды по WordPress — в разделе статьи блога.
Материал проверен редакцией: Андрей Дикий (создаёт сайты и продвигает их статьями, SEO/GEO).
Источники и даты: developer.wordpress.org (WP-Cron, hooking into system scheduler, wp-config DISABLE_WP_CRON), NetAngels и cPanel Support (команды cron), Kinsta и SSD Nodes (риск Missed schedule), GitHub johnbillion/wp-crontrol, Habr Q&A про кэш; LSI по SERP на 2026-09-15 (Вордстат MCP недоступен).
Частые вопросы
Чем системный cron отличается от WP-Cron?
WP-Cron проверяет задачи при загрузке страницы — как официант, который приносит счёт только когда гость зашёл. Системный cron — будильник на сервере: срабатывает по расписанию, даже если сайт никто не открывал.
Как отключить wp cron в WordPress безопасно?
Сначала добавьте cron-задание на хостинге и убедитесь, что wp-cron.php вызывается. Потом вставьте define(‘DISABLE_WP_CRON’, true); в wp-config.php. Не меняйте порядок — иначе задачи остановятся без ошибки на экране.
Что будет, если отключить WP-Cron без замены?
Перестанут выходить отложенные записи, уходить письма с форм, создаваться бэкапы по расписанию. Сайт визуально «живой», а фоновые процессы — нет. Это описано в материалах Kinsta и официальной документации WordPress.
Как часто запускать wp-cron.php через cron?
Оптимально каждые 15 минут (*/15 * * * *). Реже — дольше ждёте публикацию; каждую минуту на shared-хостинге часто упираетесь в лимиты CPU.
Нужен ли SSH для настройки?
Нет. На Beget, Timeweb, cPanel и NetAngels достаточно раздела Cron в панели и команды wget или curl на URL. SSH нужен только если хостинг не даёт планировщик на вашем тарифе — тогда спросите поддержку или специалиста.
Нужен ли плагин WP Crontrol после переключения?
Не обязателен для работы, но очень полезен для проверки: видно список событий, можно запустить задачу вручную и поймать «зависшие» задания после установки тяжёлых плагинов.
Сломаются ли автообновления плагинов?
Нет, если системный cron настроен. Обновления идут через те же фоновые события WordPress — меняется только способ их запуска. После переключения один раз проверьте, что cron на хостинге активен.
