Как использовать WP Cron в WordPress для автоматизации задач

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

Что такое WP Cron и как он работает

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

  • Задачи выполняются только при посещении сайта, поэтому при отсутствии трафика задания могут задерживаться.
  • WP Cron не подходит для очень частых или критически точных по времени задач.

Тем не менее, для большинства задач WP Cron отлично подходит и позволяет существенно упростить работу с сайтом.

Как создавать и регистрировать свои задачи в WP Cron

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

function wprus_schedule_hourly_event() {
    if (!wp_next_scheduled('wprus_hourly_task')) {
        wp_schedule_event(time(), 'hourly', 'wprus_hourly_task');
    }
}
add_action('wp', 'wprus_schedule_hourly_event');

function wprus_do_hourly_task() {
    // Код вашей задачи, например, очистка временных данных
}
add_action('wprus_hourly_task', 'wprus_do_hourly_task');

Здесь мы проверяем, не запланирована ли уже задача wprus_hourly_task, и если нет — создаем ее с интервалом в час. Затем через add_action связываем событие с функцией-обработчиком.

Добавление пользовательских интервалов расписания

Стандартно WordPress поддерживает интервалы 'hourly', 'twicedaily' и 'daily'. Если нужна своя периодичность, можно зарегистрировать пользовательский интервал:

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

После этого можно использовать новый интервал при планировании задачи:

wp_schedule_event(time(), 'every_five_minutes', 'wprus_five_min_task');
add_action('wprus_five_min_task', 'wprus_handle_five_min_task');

Практические примеры использования WP Cron

Очистка устаревших данных из базы

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

function wprus_clear_old_records() {
    global $wpdb;
    $table = $wpdb->prefix . 'custom_data';
    $wpdb->query(
        $wpdb->prepare("DELETE FROM $table WHERE created_at < %s", date('Y-m-d H:i:s', strtotime('-30 days')))
    );
}
add_action('wprus_daily_cleanup', 'wprus_clear_old_records');

function wprus_schedule_daily_cleanup() {
    if (!wp_next_scheduled('wprus_daily_cleanup')) {
        wp_schedule_event(time(), 'daily', 'wprus_daily_cleanup');
    }
}
add_action('wp', 'wprus_schedule_daily_cleanup');

Автоматическая отправка отчетов по email

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

function wprus_send_weekly_report() {
    $admin_email = get_option('admin_email');
    $subject = 'Еженедельный отчет сайта';
    $message = 'Здесь ваш отчет...';
    wp_mail($admin_email, $subject, $message);
}
add_action('wprus_weekly_report', 'wprus_send_weekly_report');

function wprus_schedule_weekly_report() {
    if (!wp_next_scheduled('wprus_weekly_report')) {
        wp_schedule_event(time(), 'weekly', 'wprus_weekly_report');
    }
}
add_action('wp', 'wprus_schedule_weekly_report');

// Добавим интервал "weekly"
function wprus_add_weekly_cron_schedule($schedules) {
    $schedules['weekly'] = array(
        'interval' => 7 * 24 * 60 * 60, // 7 дней
        'display' => __('Еженедельно')
    );
    return $schedules;
}
add_filter('cron_schedules', 'wprus_add_weekly_cron_schedule');

Полезные плагины для управления WP Cron

Если вы хотите контролировать задачи, их запуск и отладку, рекомендуем обратить внимание на следующие плагины:

  • WP Crontrol — добавляет интерфейс для просмотра, редактирования и создания задач WP Cron прямо из админки.
  • My Popup — полезен для автоматического показа всплывающих окон по расписанию, используя WP Cron.
  • Clearfy Pro — оптимизационный плагин, который умеет работать с WP Cron для очистки и оптимизации базы данных.

Отладка и проверка работы WP Cron

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

  • Просматривать список всех запланированных задач и их расписание.
  • Запускать задачи вручную для проверки работы.
  • Удалять или изменять задачи без редактирования кода.

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

do_action('wprus_hourly_task');

Если WP Cron не срабатывает из-за низкого трафика, рекомендуется настроить системный cron на выполнение запроса к файлу wp-cron.php раз в несколько минут:

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

Как отключить WP Cron и использовать системный cron

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

define('DISABLE_WP_CRON', true);

После этого настройте системный cron (пример выше) для регулярного вызова wp-cron.php. Это лучший вариант для сайтов с большим трафиком или требующих точного расписания.

WooCommerce: автоматическое удаление неоплаченных заказов с подробной настройкой
25.05.2026
Как избежать проблем с перемещением медиаменеджера в WordPress
04.03.2026
Как использовать WP Cron в WordPress для автоматизации задач
27.03.2026
WordPress изменение URL в Ajax без перезагрузки страницы: практическое руководство
10.12.2025
Как добавить кастомный REST API endpoint в WordPress с примером кода
07.03.2026
×

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

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

пишет статьи

готовит SEO

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

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