Как настроить отложенный запуск задач в 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.09.2026
Как настроить отложенный запуск задач в WordPress без использования WP-Cron
30.09.2026
Автоматическое изменение цены товара при обновлении в WooCommerce
08.09.2026
Как настроить отправку заказов WooCommerce на email без дублей и сбоев
11.08.2026
Как использовать метод pre_get_posts для контроля запросов в WordPress
22.09.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее