Автоматическое создание и удаление отложенных задач в WordPress с примерами кода

|

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

Что такое отложенные задачи (CRON) в WordPress и зачем они нужны

WordPress использует собственную систему планировщика задач WP-Cron, которая имитирует стандартный системный CRON. Эта система позволяет запускать функции в определённое время или с регулярным интервалом. Примеры задач: очистка кеша, отправка email-рассылок, обновление данных, публикация запланированных записей.

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

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

Как создать отложенную задачу в WordPress программно

Чтобы добавить задачу в расписание, используется функция wp_schedule_event(). Она принимает время первого запуска, интервал и имя хука, который будет вызван.

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

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

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

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

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

WordPress по умолчанию поддерживает несколько интервалов: hourly (час), twicedaily (две раза в день), daily (день). Если нужно больше вариантов, можно добавить их через фильтр cron_schedules.

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

Теперь можно использовать интервал 'every_five_minutes' при создании задач.

Как удалить отложенную задачу из расписания

Иногда требуется отменить ранее запланированные задачи. Для этого применяется функция wp_clear_scheduled_hook() или wp_unschedule_event().

Пример удаления всех задач с нашим хуком:

function wpbusiness_clear_hourly_event() {
    wp_clear_scheduled_hook('wpbusiness_hourly_task_hook');
}
// Вызывать по необходимости, например, при деактивации плагина
register_deactivation_hook(__FILE__, 'wpbusiness_clear_hourly_event');

Если задача была запланирована с определённым временем, можно удалить её точечно:

$timestamp = wp_next_scheduled('wpbusiness_hourly_task_hook');
if ($timestamp) {
    wp_unschedule_event($timestamp, 'wpbusiness_hourly_task_hook');
}

Примеры практического применения отложенных задач

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

Для бизнес-сайтов важно поддерживать базу в чистоте, удаляя устаревшие или черновики.

function wpbusiness_cleanup_old_drafts() {
    global $wpdb;
    $days = 30; // удалять черновики старше 30 дней
    $wpdb->query($wpdb->prepare(
        "DELETE FROM $wpdb->posts WHERE post_status = 'draft' AND post_modified < NOW() - INTERVAL %d DAY",
        $days
    ));
}
add_action('wpbusiness_daily_cleanup_hook', 'wpbusiness_cleanup_old_drafts');

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

Отправка напоминаний клиентам о событиях

Допустим, нужно раз в день отправлять email с напоминаниями о предстоящих встречах или акциях.

function wpbusiness_send_reminders() {
    $users = get_users(array('role' => 'customer'));
    foreach ($users as $user) {
        // Логика отправки письма
        wp_mail($user->user_email, 'Напоминание', 'Не забудьте о вашем событии!');
    }
}
add_action('wpbusiness_daily_reminder_hook', 'wpbusiness_send_reminders');

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

Использование плагинов для управления отложенными задачами

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

Для бизнес-сайтов с высоким трафиком и критичными задачами рекомендуем комбинировать WP-Cron с системным CRON и использовать плагин Clearfy Pro для оптимизации и контроля фоновых задач.

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

Работа с отложенными задачами требует внимательности и понимания:

Подробнее о правильной настройке CRON можно узнать в документации WordPress и на Expert Review — плагине для диагностики и оптимизации сайтов.

Как использовать WP-Cron для автоматического удаления старых отзывов WooCommerce
27.05.2026
Как использовать статусы заказов WooCommerce для автоматизации процессов
04.05.2026
Автоматическое отключение неиспользуемых плагинов WordPress по расписанию
04.06.2026
Автоматический редирект с WooCommerce страницы оформления заказа при отсутствии товара на складе
18.04.2026
Как автоматизировать создание отчёта о продавцах в WordPress с примерами кода
30.12.2025
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙