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

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

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

Диагностика проблем с WP-Cron

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

  • Включён ли WP-Cron? В wp-config.php не должна быть установлена константа DISABLE_WP_CRON в true.
  • Есть ли обращения к сайту? WP-Cron запускается только при посещениях сайта, если трафика нет — задачи не выполняются.
  • Нет ли конфликтов с плагинами, блокирующими запросы?
  • Проверка через плагин WP Crontrol или с помощью функции wp_get_scheduled_event() позволяет увидеть запланированные задачи и их статусы.

Пошаговое создание собственной периодической задачи с WP-Cron

1. Регистрируем новый интервал (если стандартных не хватает)

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

2. Регистрируем событие при инициализации плагина или темы

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

3. Определяем функцию-обработчик задачи

add_action('my_custom_cron_hook', function() {
    // Пример: очистка устаревших записей из таблицы
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->prefix}my_table WHERE created_at < NOW() - INTERVAL 30 DAY");
});

4. Деактивация задачи при деактивации плагина

function my_custom_cron_deactivation() {
    $timestamp = wp_next_scheduled('my_custom_cron_hook');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'my_custom_cron_hook');
    }
}
register_deactivation_hook(__FILE__, 'my_custom_cron_deactivation');

Проверка результата после внедрения

  • Установите плагин WP Crontrol (https://plugins.trac.wordpress.org/browser/wp-crontrol) для управления и просмотра запланированных задач.
  • Проверьте наличие вашего события в разделе «Cron Events».
  • Выполните задачу вручную через интерфейс плагина для проверки корректности работы хука и функции.
  • В логах сервера или через дебаг вывод отследите выполнение SQL-запроса или другой логики.

Частые ошибки и способы их устранения

  • DISABLE_WP_CRON установлена в true: WP-Cron не работает, отключите этот параметр в wp-config.php.
  • Отсутствие трафика на сайт: WP-Cron запускается только при обращении к сайту. Для гарантированной работы используйте системный cron с вызовом wp-cron.php.
  • Дублирование задач: При неправильной проверке на наличие запланированного события задачи могут накладываться. Всегда проверяйте через wp_next_scheduled() перед добавлением.
  • Ошибки в функции обработчике: Внутри хука не должно быть фатальных ошибок, используйте try-catch и логирование.
  • Плагины блокируют запросы: Некоторые плагины безопасности блокируют вызовы AJAX или wp-cron, проверьте настройки и исключения.

Практические советы по производительности и безопасности WP-Cron

  • Если сайт с низкой посещаемостью, настройте системный cron на сервере, который будет вызывать wp-cron.php через wget или curl в нужные интервалы.
  • Минимизируйте время выполнения задач — сложные операции разбивайте на несколько WP-Cron событий.
  • Логируйте ошибки в отдельный файл, чтобы оперативно отслеживать сбои.
  • Ограничьте права пользователя, под которым запускаются задачи, если используете системный cron для повышения безопасности.
  • Используйте плагин Clearfy Pro для оптимизации и контроля фоновых задач (https://wpshop.ru/plugins/clearfy?utm_source=wpma.ru&utm_medium=article&utm_campaign=kak-ispolzovat-wp-cron-dlya-avtomatizacii-zadach-v-wordpress).

Сравнение вариантов запуска WP-Cron

МетодПлюсыМинусыКогда использовать
Стандартный WP-CronПрост в настройке, встроен в WordPressЗависит от посещаемости сайта, нет точного времени запускаСайты с хорошим трафиком
Системный cron вызовом wp-cron.phpТочный запуск по расписанию, не зависит от посетителейТребует доступа к серверу, настройка сложнееНизкий трафик, критичные задачи
Плагины для управления cron (например, WP Crontrol)Удобный интерфейс, мониторинг задачДополнительная нагрузка, может конфликтовать с другими плагинамиДля разработки и отладки
Как добавить автоматическое подключение к контейнеру Redis в WordPress
30.03.2026
WooCommerce: автоматическое отключение способов оплаты при неподтверждённых заказах без плагинов
17.06.2026
Как добавить кастомные типы записей в WordPress без плагинов
16.12.2025
Как удалить лишние meta-теги на страницах WordPress для оптимального SEO
11.01.2026
Как удалить или отключить плагин на определённых страницах WordPress
19.03.2026