Как настроить отложенный запуск функций в WordPress с помощью Cron

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

Что такое WP-Cron и почему он не всегда надёжен

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

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

Давайте разберём, как работать с WP-Cron, а затем рассмотрим, как переключиться на системный cron для надёжности.

Как добавить отложенную задачу в WP-Cron

Для планирования задачи в WP-Cron используется функция wp_schedule_event. Вот пример, как запланировать запуск функции wp_course_send_reminder через час и затем повторять её каждый час.

function wp_course_send_reminder() {
    // Логика отправки напоминания
    error_log('Отправлено напоминание пользователям');
}

// Регистрируем наш хук
add_action('wp_course_hourly_event', 'wp_course_send_reminder');

// Функция для планирования события
function wp_course_schedule_event() {
    if (!wp_next_scheduled('wp_course_hourly_event')) {
        wp_schedule_event(time() + 3600, 'hourly', 'wp_course_hourly_event');
    }
}
add_action('wp', 'wp_course_schedule_event');

Обратите внимание, что мы используем префикс wp_course_ для уникальности. Это важно, чтобы избежать конфликтов с другими плагинами.

Здесь мы планируем событие с именем wp_course_hourly_event, которое будет срабатывать каждый час и вызывать функцию wp_course_send_reminder.

Удаление задачи

Если требуется отменить запланированное событие, используйте:

function wp_course_clear_scheduled_event() {
    $timestamp = wp_next_scheduled('wp_course_hourly_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wp_course_hourly_event');
    }
}

Создание пользовательского интервала для WP-Cron

По умолчанию WP-Cron поддерживает интервалы 'hourly', 'twicedaily' и 'daily'. Если нужна своя периодичность, например каждые 10 минут, можно добавить свой интервал:

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

Теперь можно использовать этот интервал при планировании:

wp_schedule_event(time(), 'every_ten_minutes', 'wp_course_hourly_event');

Отладка WP-Cron: как проверить, работает ли отложенный запуск

WP-Cron не всегда запускается из-за отсутствия посетителей. Для проверки можно использовать плагин WP Crontrol. Он позволяет:

  • Просматривать запланированные задачи;
  • Редактировать или удалять задачи;
  • Запускать задачи вручную для тестирования;
  • Добавлять свои cron-события.

Установка и использование очень просты — просто найдите плагин в репозитории WordPress и активируйте.

Переключение на системный Cron для надёжности

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

define('DISABLE_WP_CRON', true);

Далее на сервере создайте cron-задачу, которая будет запускать WP-Cron скрипт раз в 5 минут (пример для Linux):

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

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

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

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

Использование плагина Clearfy Pro для управления Cron задачами

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

Это особенно полезно на больших сайтах, где много плагинов создают свои cron-события.

Пример: создание отложенной очистки кэша с помощью WP-Cron

Допустим, у вас есть плагин кэширования, и нужно очищать кэш каждые 30 минут. Вот пример кода:

function wp_course_clear_cache() {
    if (function_exists('wp_cache_clear_cache')) {
        wp_cache_clear_cache();
        error_log('Кэш очищен');
    }
}

add_action('wp_course_clear_cache_event', 'wp_course_clear_cache');

function wp_course_schedule_cache_clear() {
    if (!wp_next_scheduled('wp_course_clear_cache_event')) {
        wp_schedule_event(time(), 'thirty_minutes', 'wp_course_clear_cache_event');
    }
}
add_action('wp', 'wp_course_schedule_cache_clear');

// Добавим интервал 30 минут
function wp_course_add_thirty_minutes_interval($schedules) {
    $schedules['thirty_minutes'] = array(
        'interval' => 1800, // 30 минут
        'display'  => 'Каждые 30 минут'
    );
    return $schedules;
}
add_filter('cron_schedules', 'wp_course_add_thirty_minutes_interval');

Резюме и рекомендации по работе с отложенным запуском функций в WordPress

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

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
WooCommerce: как запретить изменение количества товаров в корзине
16.05.2026
Как создать свой шорткод в WordPress: практическое руководство с примерами
10.11.2025
WooCommerce: отладка и решение проблем при обновлении товаров в корзине
08.05.2026
WooCommerce: как избежать конфликтов при изменении товара в корзине
29.05.2026
Как использовать WPRemark для управления комментариями в WordPress
13.04.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше