Настроить системный cron вместо WP-Cron на хостинге

sistemnyj cron vmesto wp cron cover Без рубрики
Пошагово: cron каждые 15 минут в панели хостинга, define DISABLE_WP_CRON, проверка WP Crontrol и отложенной записи. Без SSH, простой русский.

Отложенная запись висит «пропущено по расписанию», письма с формы не уходят, хостинг пишет «всё работает». Марина ждала пост про акцию на субботу 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

Две карточки сравнения WP-Cron и системного cron на светлом столе

Не каждому сайту нужна замена сразу. Но если узнаёте себя в списке — откладывать опасно: задачи копятся тихо, без красной ошибки на экране.

  • Статус «пропущено по расписанию» (Missed schedule) у отложенных записей.
  • Формы и письма уходят с задержкой в часы, а не минуты.
  • Бэкапы плагина «висят» или не создаются ночью.
  • Сайт медленный при малом трафике — WP-Cron дёргает PHP при каждом заходе.
  • Стоит агрессивный кэш: страницы отдаются без PHP, и встроенный планировщик не просыпается.

Оставить как есть можно, если трафик постоянный и нет отложенных публикаций. У салона утром заходов мало — пост к обеду часто зависает.

Критерий Встроенный WP-Cron Системный cron на хостинге
Когда срабатывает При заходе на сайт (или в админку) По расписанию сервера, без посетителей
Отложенный пост на 10:00 Может выйти только когда кто-то зайдёт позже Обычно в течение 15-20 минут после времени
Нагрузка на shared-хостинг PHP при каждом визите Один короткий запрос раз в 15 минут
Нужна панель хостинга Нет Да, раздел Cron или Планировщик

Подготовьте бэкап и найдите раздел Cron в панели

Чеклист подготовки: бэкап wp-config и раздел Cron в панели хостинга

Главный страх — «сломаю wp-config.php». Типичная ошибка — править файл без копии. Сделайте так:

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

Типичная ошибка: ищут cron в WordPress, а он только в панели хостинга.

Добавьте задание на хостинге — шаг 1

Стикер с расписанием cron и командой wget на wp-cron.php

Ключевой порядок из официальной документации 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.

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

Проверьте, что отложенная запись и письма снова работают

Результат, который вы получите за вечер, простой: в панели хостинга есть одно cron-задание раз в 15 минут; в wp-config стоит DISABLE_WP_CRON; тестовая отложенная запись выходит в течение 15-20 минут после времени; в WP Crontrol события не копятся месяцами.

Порядок проверки: создать черновик с публикацией через 5 минут → дождаться 15-20 минут → статус «опубликовано» → в WP Crontrol свежая дата у wp_scheduled_delete и связанных задач → тест формы или бэкапа по расписанию

  1. В админке создайте тестовую запись и поставьте время публикации на ближайшие 5-10 минут.
  2. Не заходите на главную сайта каждую минуту — пусть сработает именно серверный cron.
  3. Через 15-20 минут обновите список записей: статус должен смениться на «опубликовано».
  4. WP Crontrol → Cron Events: у событий обновилась колонка «Next Run» / последний запуск.
  5. Если есть плагин бэкапа или форма — проверьте, что ночной бэкап или тестовое письмо дошли.

У Марины следующий пост вышел в 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 работает, имеет смысл навести порядок в соседних «фоновых» настройках — они тоже бьют по расписанию и нагрузке:

Материал проверен редакцией: Андрей Дикий (создаёт сайты и продвигает их статьями, 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 на хостинге активен.

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