Как настроить удалённый запуск задач в WordPress с помощью WP-Cron

WP-Cron — это встроенная в WordPress система запуска запланированных задач, таких как публикация отложенных постов, очистка кэша, отправка email-рассылок и многое другое. Однако, по умолчанию, WP-Cron запускается только при посещении сайта, что может вызывать задержки или сбои в выполнении задач при низкой посещаемости. В этой статье мы подробно разберём, как правильно настроить удалённый запуск WP-Cron, чтобы задачи выполнялись стабильно и вовремя.

Что такое WP-Cron и почему он зависит от посещений сайта

WP-Cron — это имитация системного cron, реализованная на PHP в WordPress. Когда кто-то посещает сайт, WordPress проверяет, есть ли запланированные задачи, которые пора выполнить, и запускает их. Если сайт не посещают, задачи не выполняются, что может быть критично для проектов с низкой посещаемостью.

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

Отключение встроенного WP-Cron и настройка системного cron (Linux)

Для начала нужно отключить автоматический запуск wp-cron при посещении сайта. Для этого в wp-config.php добавьте следующую строку:

define('DISABLE_WP_CRON', true);

Это остановит запуск WP-Cron при каждом посещении.

Далее на сервере в планировщике задач (crontab) добавьте команду для запуска WP-Cron по расписанию. Например, чтобы запускать каждые 15 минут, выполните в терминале:

crontab -e

И добавьте строчку:

*/15 * * * * wget -q -O - https://ваш-сайт.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Или, если wget недоступен, используйте curl:

*/15 * * * * curl -s https://ваш-сайт.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Так вы обеспечите стабильный запуск задач WP-Cron без зависимости от посещений.

Настройка на Windows (через Планировщик заданий)

Если сервер на Windows, настройте задачу в Планировщике заданий с запуском curl или wget по аналогичной команде каждые 15 минут.

Реализация удалённого вызова WP-Cron с защитой

Чтобы защитить wp-cron.php от нежелательных вызовов, можно добавить проверку секретного ключа. Для этого создайте свой плагин или добавьте код в functions.php темы:

add_action('init', 'wponline_disable_wp_cron_without_key');
function wponline_disable_wp_cron_without_key() {
    if (defined('DOING_CRON') && DOING_CRON) {
        if (!isset($_GET['wponline_cron_key']) || $_GET['wponline_cron_key'] !== 'secret_key_123') {
            wp_die('Access denied');
        }
    }
}

Теперь запускать cron нужно так:

wget -q -O - "https://ваш-сайт.ru/wp-cron.php?doing_wp_cron&wponline_cron_key=secret_key_123" >/dev/null 2>&1

Это добавит дополнительный уровень безопасности.

Пример создания собственной задачи WP-Cron с удалённым запуском

Допустим, нужно раз в час запускать задачу по удалённому сбросу кэша. Добавим функцию и зарегистрируем событие:

add_action('wponline_hourly_event', 'wponline_clear_cache');
function wponline_clear_cache() {
    // Логика очистки кэша
    error_log('Кэш очищен ' . current_time('mysql'));
}

function wponline_schedule_cron() {
    if (!wp_next_scheduled('wponline_hourly_event')) {
        wp_schedule_event(time(), 'hourly', 'wponline_hourly_event');
    }
}
add_action('wp', 'wponline_schedule_cron');

Теперь при правильной настройке системного cron задача будет запускаться ежечасно.

Полезные плагины для работы с WP-Cron

  • WP Crontrol — позволяет просматривать и управлять запланированными задачами через админку. Очень удобно для диагностики.
  • Advanced Cron Manager — расширенные возможности управления WP-Cron с фильтрами и экспортом.
  • Clearfy Pro (ссылка с метками: Clearfy Pro) — содержит инструменты для оптимизации и контроля WP-Cron.

Диагностика и отладка WP-Cron

Чтобы проверить работу cron, можно добавить в функцию задачи логирование в файл или error_log. Также с помощью плагинов типа WP Crontrol можно увидеть, когда последний раз запускалась задача.

Если задачи не выполняются, проверьте:

  • Отключён ли встроенный WP-Cron (DISABLE_WP_CRON должен быть true)
  • Правильно ли настроен системный cron с корректным URL
  • Работает ли вызов wp-cron.php без ошибок (проверьте доступ к странице и логи)
  • Нет ли блокировок со стороны брандмауэра или плагинов безопасности

Выводы и советы по настройке удалённого запуска WP-Cron

Удалённый запуск WP-Cron — простой и эффективный способ обеспечить стабильное выполнение запланированных задач на сайте, особенно при низкой посещаемости. Отключайте встроенный запуск, используйте системный cron и добавляйте защиту вызовов. Для удобства управления используйте плагины WP Crontrol или Advanced Cron Manager.

Правильная настройка WP-Cron поможет избежать задержек, ошибок и повысит надёжность работы вашего сайта на WordPress.

WooCommerce: как удалить старые вариации товаров с помощью кода
13.05.2026
Как создать настройки плагинов WordPress с использованием Settings API
09.01.2026
Оптимизация базы данных WordPress: удаляем старые ревизии и ускоряем сайт
13.11.2025
Как автоматизировать и контролировать запуски WP-Cron в WordPress
19.03.2026
Как создать простой пагинационный класс в WordPress с поддержкой AJAX
17.12.2025