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

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

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

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

Это удобно, так как не требует доступа к серверу, но имеет и ограничения — если на сайт долго не заходят, задачи могут запускаться с задержкой. Для критичных задач желательно использовать системный cron с вызовом wp-cron.php.

Основные функции WP-Cron:

  • Планирование одноразовых и повторяющихся задач;
  • Возможность создавать собственные хуки для запуска своих функций;
  • Управление задачами через API WordPress.

Создание и планирование задач WP-Cron

Для работы с WP-Cron используются функции wp_schedule_event()wp_clear_scheduled_hook() и хук add_action(). Ниже пример регистрации задачи, которая будет выполняться каждый час.

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

function wpcalc_hourly_task() {
    // Ваш код, который нужно выполнять каждый час
    error_log('Запуск часовой задачи WP-Cron');
}
add_action('wpcalc_hourly_event', 'wpcalc_hourly_task');

Объяснение:

  • wp_schedule_event() планирует событие с указанным интервалом;
  • проверка wp_next_scheduled() нужна, чтобы не создавать дубликаты задач;
  • действия по событию подключаются через add_action() на кастомный хук.

Регистрация пользовательского интервала

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

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

Теперь можно использовать every_five_minutes в wp_schedule_event().

Управление и отладка задач WP-Cron

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

Отладка WP-Cron — важный этап. Если задачи не запускаются, проверьте:

  • Активирован ли WP-Cron (параметр DISABLE_WP_CRON в wp-config.php должен быть false или отсутствовать);
  • Есть ли посещения сайта (если нет, задачи не запускаются);
  • Логи ошибок сервера и WordPress;
  • Корректно ли прописаны хуки и функция для задачи.

Пример удаления задачи

function wpcalc_clear_cron_job() {
    $timestamp = wp_next_scheduled('wpcalc_hourly_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpcalc_hourly_event');
    }
}
add_action('switch_theme', 'wpcalc_clear_cron_job');

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

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

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

  • Отправка email-рассылок — запланировать отправку писем подписчикам;
  • Очистка базы данных — удаление устаревших записей, ревизий и прочего мусора;
  • Обновление данных — например, обновлять курсы валют или цены из внешних API;
  • Автоматическое создание резервных копий через интеграции плагинов;
  • Публикация отложенных записей или изменение статусов.

Пример: обновление курса валют через WP-Cron

function wpcalc_update_currency_rates() {
    $response = wp_remote_get('https://api.exchangerate-api.com/v4/latest/USD');
    if (is_wp_error($response)) {
        error_log('Ошибка получения курса валют');
        return;
    }
    $data = json_decode(wp_remote_retrieve_body($response), true);
    if (!empty($data['rates'])) {
        update_option('wpcalc_currency_rates', $data['rates']);
        error_log('Курсы валют успешно обновлены');
    }
}

function wpcalc_schedule_currency_update() {
    if (!wp_next_scheduled('wpcalc_currency_update_event')) {
        wp_schedule_event(time(), 'daily', 'wpcalc_currency_update_event');
    }
}
add_action('wp', 'wpcalc_schedule_currency_update');
add_action('wpcalc_currency_update_event', 'wpcalc_update_currency_rates');

Этот код раз в день запрашивает актуальные курсы валют и сохраняет их в опции WordPress для дальнейшего использования на сайте.

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

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

  • Для сайтов с низкой посещаемостью используйте системный cron, вызывающий wp-cron.php регулярно (например, каждые 5 минут).
  • Минимизируйте время выполнения задач, чтобы не создавать нагрузку на сервер.
  • Используйте функции wp_schedule_single_event() для одноразовых отложенных задач.
  • Проверяйте наличие задач перед их созданием, чтобы исключить дублирование.
  • Обрабатывайте ошибки и логируйте важные события для отладки.

Для настройки системного cron добавьте в crontab следующую строку (пример для Linux-сервера):

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

Это вызовет WP-Cron каждые 5 минут вне зависимости от посещаемости.

Выводы и полезные плагины для работы с WP-Cron

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

Рекомендуемые плагины для расширенной работы с WP-Cron:

  • WP Crontrol — управление и отладка задач;
  • Clearfy Pro — оптимизация и очистка, позволяет интегрироваться с WP-Cron.

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

WooCommerce: авторизация пользователя по номеру телефона с SMS-подтверждением
23.04.2026
Как создать многошаговую форму в WordPress с расчетом и AJAX
04.01.2026
Как создать автоматические отчёты в WordPress с помощью CRON и PHP
29.01.2026
Как добавить расчет налогов в WordPress калькуляторе
05.02.2026
Как создать многоуровневую форму в WordPress с AJAX
01.12.2025