Как сделать отложенный запуск cron задач в WordPress

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

Что такое отложенный запуск WP-Cron и зачем он нужен

Отложенный запуск (delayed cron) позволяет контролировать время выполнения cron задач, отключить автоматический запуск при каждом визите и запускать задачи по расписанию с помощью системных планировщиков, например, системного cron на сервере. Это повышает стабильность и производительность сайта, снижает нагрузку на PHP и базу данных.

На WPengine вы не всегда можете настроить системный cron напрямую, поэтому нужно использовать альтернативные методы отложенного запуска, которые совместимы с хостингом и обеспечивают надежное выполнение задач.

Проблемы стандартного WP-Cron

  • Запуск только при посещении сайта, что не гарантирует своевременное выполнение
  • Высокая нагрузка при большом трафике из-за многократных запусков
  • Проблемы с задачами, требующими точного времени выполнения

Как отключить автозапуск WP-Cron и настроить отложенный запуск на WPengine

Первый шаг – отключить стандартный запуск WP-Cron, добавив в wp-config.php следующую строку:

define('DISABLE_WP_CRON', true);

Это предотвратит автоматический запуск cron при каждом заходе пользователя.

Далее мы можем использовать системный cron или альтернативные решения для запуска wp-cron.php с нужным интервалом.

Настройка системного cron (если доступен)

Если у вас есть доступ к crontab на сервере, добавьте задачу, которая будет запускать WP-Cron, например, раз в 15 минут:

*/15 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Замените https://example.com на адрес вашего сайта. Это самый надежный способ отложенного запуска.

Альтернативный способ – запуск через HTTP-запрос с помощью плагина

Если доступ к серверному cron отсутствует, можно использовать плагин, который будет запускать задачи с задержкой или через AJAX, например, Clearfy Pro. Плагин позволяет настраивать интервалы запуска и отключать автозапуск WP-Cron.

Пример кастомного решения для отложенного запуска WP-Cron на WPengine

Рассмотрим пример кода, который отключает стандартный WP-Cron и реализует запуск задач через AJAX с задержкой.

1. Отключаем WP-Cron в wp-config.php

define('DISABLE_WP_CRON', true);

2. Добавляем AJAX-хук для запуска cron

add_action('wp_ajax_wpengine_run_cron', 'wpengine_run_cron_function');
add_action('wp_ajax_nopriv_wpengine_run_cron', 'wpengine_run_cron_function');

function wpengine_run_cron_function() {
    if (!defined('DOING_CRON')) {
        define('DOING_CRON', true);
    }
    require_once ABSPATH . 'wp-cron.php';
    wpengine_send_json_success('Cron запущен успешно');
}

function wpengine_send_json_success($message) {
    wp_send_json_success(array('message' => $message));
}

3. Вставляем JavaScript для вызова AJAX с задержкой

add_action('wp_footer', 'wpengine_enqueue_cron_script');
function wpengine_enqueue_cron_script() {
    ?>
    <script>
    setTimeout(function() {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '<?php echo admin_url('admin-ajax.php'); ?>');
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.send('action=wpengine_run_cron');
    }, 900000); // 15 минут задержка
    </script>
    <?php
}

Этот код запускает WP-Cron через AJAX спустя 15 минут после загрузки страницы, что снижает нагрузку и распределяет вызовы.

Советы по мониторингу и отладке отложенного WP-Cron на WPengine

Чтобы убедиться, что задачи запускаются корректно, используйте плагины мониторинга, например, WP Crontrol или Expert Review для анализа cron задач и логов.

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

Выводы и рекомендации

Отложенный запуск WP-Cron на WPengine позволяет существенно повысить стабильность и производительность сайта. Отключение автоматического запуска и использование системного cron или AJAX-запуска с задержкой – лучшие практики для профессиональных проектов. Если системный cron недоступен, используйте описанный AJAX метод или специализированные плагины, например, Clearfy Pro.

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

Как использовать хуки и фильтры в WordPress для кастомизации сайта
18.11.2025
Автоматизация отключения неиспользуемых плагинов в WordPress на WPengine
26.01.2026
Как создать собственный виджет в WordPress: подробное руководство с примерами
22.11.2025
Автоматизация обновлений WordPress с WPengine: настройка и примеры
14.12.2025
WooCommerce: решение проблемы не работающих вариативных атрибутов в описании товара
19.04.2026