Как автоматизировать запуск событий в WordPress с помощью CRON Schedule

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

Что такое WP-Cron и зачем он нужен

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

Тем не менее, WP-Cron удобен тем, что не требует доступа к серверному cron и позволяет создавать свои события прямо из кода плагина или темы.

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

Создание пользовательских событий с WPManual_cron_schedule

Для запуска своих задач нужно зарегистрировать новое событие и привязать к нему функцию-обработчик. Ниже приведён пример создания собственного события с интервалом в 5 минут.

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

function wpmanual_schedule_custom_event() {
    if ( ! wp_next_scheduled( 'wpmanual_custom_cron_hook' ) ) {
        wp_schedule_event( time(), 'every_five_minutes', 'wpmanual_custom_cron_hook' );
    }
}
add_action( 'wp', 'wpmanual_schedule_custom_event' );

function wpmanual_custom_cron_function() {
    // Здесь пишем код, который должен выполняться каждые 5 минут
    error_log('WPManual: Запуск пользовательского CRON-события');
}
add_action( 'wpmanual_custom_cron_hook', 'wpmanual_custom_cron_function' );

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

Как проверить и отладить WP-Cron

Для контроля работы WP-Cron можно использовать несколько способов:

  • Плагин WP Crontrol позволяет просматривать, редактировать и запускать задачи вручную.
  • В логе ошибок сервера (или в debug.log при включённом WP_DEBUG_LOG) можно отслеживать сообщения из обработчиков.
  • Для проверки фактического запуска событий можно временно добавить запись в лог или отправку email.

Если задачи не запускаются, возможно, низкая посещаемость сайта или отключён WP-Cron (константа DISABLE_WP_CRON установлена в true). В этом случае нужно либо включить WP-Cron, либо настроить системный cron.

Настройка системного cron для надежного запуска задач

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

  1. Отключите WP-Cron, добавив в wp-config.php строку define('DISABLE_WP_CRON', true);
  2. Настройте системный cron на сервере, например, с помощью crontab:
*/5 * * * * wget -q -O - https://ваш-сайт.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1
<

Это обеспечит вызов wp-cron.php каждые 5 минут, запускающий запланированные события.

Примеры практического применения автоматизированных событий

Автоматическая очистка кеша с помощью плагина Clearfy Pro

Если у вас установлен плагин Clearfy Pro, можно автоматически сбрасывать кеш по расписанию, интегрировав вызов функции очистки в CRON-событие:

function wpmanual_clearfy_cache_clear() {
    if ( function_exists( 'clearfy_pro_clear_cache' ) ) {
        clearfy_pro_clear_cache();
    }
}
add_action( 'wpmanual_custom_cron_hook', 'wpmanual_clearfy_cache_clear' );

Отправка автоматических email-уведомлений

Допустим, нужно раз в день отправлять отчет администраторам. Реализуем это через CRON:

function wpmanual_send_daily_report() {
    $to = get_option( 'admin_email' );
    $subject = 'Ежедневный отчет сайта';
    $message = 'Статистика посещений и другие данные...';
    wp_mail( $to, $subject, $message );
}
add_action( 'wpmanual_daily_cron_hook', 'wpmanual_send_daily_report' );

// Регистрация ежедневного события
function wpmanual_schedule_daily_event() {
    if ( ! wp_next_scheduled( 'wpmanual_daily_cron_hook' ) ) {
        wp_schedule_event( time(), 'daily', 'wpmanual_daily_cron_hook' );
    }
}
add_action( 'wp', 'wpmanual_schedule_daily_event' );

Рекомендации по работе с WP-Cron

Чтобы избежать проблем с WP-Cron, соблюдайте следующие рекомендации:

  • Используйте системный cron для критичных задач.
  • Минимизируйте нагрузку в задачах — избегайте длительных операций.
  • Используйте уникальные имена событий, чтобы избежать конфликтов с другими плагинами.
  • Регулярно проверяйте список запланированных задач с помощью плагинов.

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

Как проверить и использовать WP-Cron для автоматизации задач в WordPress
15.04.2026
WooCommerce не работает отправка писем после обновления: диагностика и решение
26.04.2026
Как удалять и изменять поля пользователя в WordPress через код
11.04.2026
WooCommerce: решение проблемы с нерабочими кодами купонов
18.06.2026
Как отключить классический редактор Gutenberg в WordPress и использовать альтернативы
26.03.2026