Как настроить отложенный запуск задач в WordPress без использования WP-Cron

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

Почему стоит отказаться от стандартного WP-Cron?

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

  • При низкой посещаемости задачи могут выполняться с задержкой или вообще не запускаться.
  • На сайтах с высокой нагрузкой WP-Cron может запускаться слишком часто, создавая дополнительную нагрузку.
  • Отсутствует точное расписание — запуск происходит не по точному времени, а при первом запросе после запланированного времени.

Поэтому для серьезных проектов рекомендуется отключать WP-Cron и запускать задачи через системный cron по расписанию.

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

Для начала отключим стандартный WP-Cron, добавив в wp-config.php следующую строку:

define('DISABLE_WP_CRON', true);

Теперь необходимо настроить системный cron. Для этого выполните команду на сервере (пример для запуска задач каждую минуту):

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

Или с помощью curl:

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

Это гарантирует запуск запланированных задач по расписанию, независимо от посещаемости сайта.

Создание собственной задачи с отложенным запуском

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

Регистрация задачи в WordPress

Добавим следующий код в файл плагина или functions.php темы:

function wordpressy_schedule_custom_task() {
    if (!wp_next_scheduled('wordpressy_custom_task_hook')) {
        wp_schedule_event(time(), 'five_minutes', 'wordpressy_custom_task_hook');
    }
}
add_action('wp', 'wordpressy_schedule_custom_task');

Обратите внимание, что стандартные интервалы WP-Cron не включают 5 минут, поэтому создадим свой интервал:

function wordpressy_custom_cron_intervals($schedules) {
    if (!isset($schedules['five_minutes'])) {
        $schedules['five_minutes'] = array(
            'interval' => 300, // 300 секунд = 5 минут
            'display' => __('Каждые 5 минут')
        );
    }
    return $schedules;
}
add_filter('cron_schedules', 'wordpressy_custom_cron_intervals');

Обработчик задачи

Теперь определим функцию, которая будет выполняться по расписанию:

function wordpressy_custom_task() {
    $log_file = WP_CONTENT_DIR . '/wordpressy-cron.log';
    $current_time = date('Y-m-d H:i:s');
    file_put_contents($log_file, "[{$current_time}] Задача wordpressy_custom_task выполнена\n", FILE_APPEND);
}
add_action('wordpressy_custom_task_hook', 'wordpressy_custom_task');

Проверка и отладка задач

Чтобы убедиться, что задачи работают корректно, проверьте наличие файла wordpressy-cron.log в папке wp-content и убедитесь, что в нем появляются новые записи с отметками времени.

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

Дополнительные советы по надежному запуску задач

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

2. Обрабатывайте ошибки: добавляйте обработку исключений внутри функций задач, чтобы не прерывать выполнение других cron-задач.

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

Заключение

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

Если хотите расширить функционал сайта, рекомендуем ознакомиться с плагином Clearfy Pro для оптимизации и управления задачами WordPress.

Как создать кастомный виджет в WordPress
02.12.2025
Как использовать WP REST API для автоматического обновления товаров WooCommerce
01.05.2026
Автообновление плагинов в WordPress: безопасный подход с WordPressy
18.11.2025
Автоматический импорт продуктов в WordPress: настройка и примеры
17.02.2026
Как создать динамические поля в WordPress без плагинов
26.03.2026