Как создать автоматические обновления данных в WordPress с помощью WP-Cron

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

Что такое WP-Cron и почему он важен для автоматизации

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

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

Однако важно учитывать, что при низкой посещаемости сайта задачи могут запускаться с задержкой, а при высокой — нагрузка на сервер может увеличиваться. В статье рассмотрим, как минимизировать эти недостатки.

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

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

Как зарегистрировать и запланировать задачу обновления данных в WP-Cron

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

Рассмотрим пример из wpco, где нам нужно обновлять кастомные данные из внешнего API раз в час.

Шаг 1. Создаём функцию обновления данных

function wpco_update_custom_data() {
    $response = wp_remote_get('https://example.com/api/data');
    if (is_wp_error($response)) {
        return; // Обработка ошибки
    }
    $data = json_decode(wp_remote_retrieve_body($response), true);
    if (!$data) {
        return;
    }
    // Предположим, что нужно обновить метаданные записей
    foreach ($data as $item) {
        $post_id = $item['post_id'];
        update_post_meta($post_id, '_wpco_custom_field', sanitize_text_field($item['value']));
    }
}

Эта функция делает запрос к API и обновляет метаполя в записях.

Шаг 2. Регистрируем событие в WP-Cron

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

Здесь мы проверяем, запланировано ли уже событие с именем wpco_hourly_update_event. Если нет — добавляем его с периодичностью hourly (каждый час).

Шаг 3. Привязываем функцию обновления к событию

add_action('wpco_hourly_update_event', 'wpco_update_custom_data');

Теперь, когда событие срабатывает, вызывается наша функция, которая обновляет данные.

Как добавить собственный интервал времени в WP-Cron

По умолчанию WordPress поддерживает интервалы: hourly, twicedaily, daily. Если нужно, например, обновлять данные каждые 15 минут, придётся добавить свой интервал.

function wpco_custom_cron_schedules($schedules) {
    $schedules['every_fifteen_minutes'] = array(
        'interval' => 900, // 900 секунд = 15 минут
        'display'  => __('Every 15 Minutes')
    );
    return $schedules;
}
add_filter('cron_schedules', 'wpco_custom_cron_schedules');

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

wp_schedule_event(time(), 'every_fifteen_minutes', 'wpco_fifteen_minute_update_event');

Проверка, удаление и отладка WP-Cron задач

Для управления и отладки cron-задач полезно использовать плагины:

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

Для удаления задачи используйте:

function wpco_clear_cron_event() {
    $timestamp = wp_next_scheduled('wpco_hourly_update_event');
    if ($timestamp) {
        wp_unschedule_event($timestamp, 'wpco_hourly_update_event');
    }
}
<

Запускайте эту функцию, если нужно отменить автоматические обновления.

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

Избегайте тяжелых задач

Если задача обновления данных занимает много времени, лучше разбить её на несколько меньших или использовать внешние cron-сервисы для вызова wp-cron.php по расписанию, чтобы не зависеть от посещаемости сайта.

Используйте плагин Clearfy Pro для оптимизации

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

Пример вызова WP-Cron с внешнего сервера

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

* * * * * wget -q -O - https://your-site.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1
<

Это позволит запускать задачи ежеминутно вне зависимости от посещаемости.

Подводим итоги

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

Как сделать автоматический импорт данных из Google Sheets в WordPress
24.02.2026
Как установить ограничения на число записей в контейнере WordPress
05.02.2026
Как автоматически отправлять отзывы пользователей в WordPress
07.03.2026
Как использовать WP-Cron для задач автоматизации в WordPress
14.04.2026
Как автоматизировать обновление плагинов в WordPress без рисков
11.04.2026