Как создать автоматический плагин обновления данных в WordPress

В этой статье мы подробно разберем, как создать плагин для WordPress, который автоматически обновляет данные с внешнего источника по расписанию. Такая задача часто встречается при интеграции с API, обновлении курсов валют, новостей или других динамических данных без вмешательства пользователя.

Почему стоит делать автоматическое обновление данных в плагине WordPress

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

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

Важный момент — корректная работа с WP-Cron, обработка ошибок и логирование, чтобы быстро выявлять проблемы с обновлениями.

Создание плагина с автоматическим обновлением данных: основные шаги

1. Регистрация плагина и создание планировщика WP-Cron

Начнем с создания простого плагина. В корне wp-content/plugins создайте папку wptem-auto-update, а в ней файл wptem-auto-update.php с таким содержимым:

<?php
/**
 * Plugin Name: WPTEM Автообновление данных
 * Description: Плагин для автоматического обновления данных с внешнего источника
 * Version: 1.0
 * Author: WPTEM
 */

// Регистрация события планировщика при активации плагина
register_activation_hook(__FILE__, 'wptem_auto_update_activation');
function wptem_auto_update_activation() {
    if (!wp_next_scheduled('wptem_auto_update_cron_hook')) {
        wp_schedule_event(time(), 'hourly', 'wptem_auto_update_cron_hook');
    }
}

// Очистка планировщика при деактивации
register_deactivation_hook(__FILE__, 'wptem_auto_update_deactivation');
function wptem_auto_update_deactivation() {
    wp_clear_scheduled_hook('wptem_auto_update_cron_hook');
}

// Хук для выполнения задачи
add_action('wptem_auto_update_cron_hook', 'wptem_auto_update_function');

// Функция обновления данных
function wptem_auto_update_function() {
    // Здесь будет логика обновления данных
}

Здесь мы создаем задачу, которая будет запускаться ежечасно. Можно изменить частоту, зарегистрировав кастомный интервал, если нужно чаще или реже.

2. Добавление кастомного интервала для WP-Cron

Если вам нужно, например, запускать обновления каждые 30 минут, добавьте фильтр, расширяющий интервалы:

add_filter('cron_schedules', 'wptem_add_custom_cron_interval');
function wptem_add_custom_cron_interval($schedules) {
    if (!isset($schedules['every_thirty_minutes'])) {
        $schedules['every_thirty_minutes'] = array(
            'interval' => 1800, // 30 минут в секундах
            'display' => __('Каждые 30 минут')
        );
    }
    return $schedules;
}

// Измените wp_schedule_event в функции активации:
// wp_schedule_event(time(), 'every_thirty_minutes', 'wptem_auto_update_cron_hook');

3. Логика обновления данных: загрузка и сохранение

Для примера сделаем обновление данных о курсе валют с публичного API. Используем API Центробанка России, который возвращает XML с курсами валют.

Добавим код в функцию wptem_auto_update_function:

function wptem_auto_update_function() {
    $url = 'https://www.cbr.ru/scripts/XML_daily.asp';
    $response = wp_remote_get($url);

    if (is_wp_error($response)) {
        error_log('WPTEM Auto Update: Ошибка запроса данных - ' . $response->get_error_message());
        return;
    }

    $body = wp_remote_retrieve_body($response);
    if (empty($body)) {
        error_log('WPTEM Auto Update: Пустой ответ API');
        return;
    }

    $xml = simplexml_load_string($body);
    if ($xml === false) {
        error_log('WPTEM Auto Update: Ошибка парсинга XML');
        return;
    }

    $currencies = [];
    foreach ($xml->Valute as $valute) {
        $currencies[(string)$valute->CharCode] = (float)str_replace(',', '.', (string)$valute->Value);
    }

    // Сохраняем данные в опции
    update_option('wptem_currency_rates', $currencies);
    error_log('WPTEM Auto Update: Курсы валют обновлены успешно');
}

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

Использование обновленных данных на сайте

Для вывода данных создадим шорткод, который покажет курс нужной валюты:

add_shortcode('wptem_currency_rate', 'wptem_shortcode_currency_rate');
function wptem_shortcode_currency_rate($atts) {
    $atts = shortcode_atts(array('code' => 'USD'), $atts);
    $rates = get_option('wptem_currency_rates', []);

    $code = strtoupper($atts['code']);
    if (isset($rates[$code])) {
        return 'Курс ' . esc_html($code) . ': ' . esc_html($rates[$code]);
    } else {
        return 'Курс валюты не найден';
    }
}
<

Для вывода курса в записи или на странице используйте шорткод [wptem_currency_rate code="EUR"].

Дополнительные советы по улучшению плагина

Обработка ошибок и уведомления

Для продакшн-плагина желательно реализовать уведомления об ошибках, например, отправку на email администратора или интеграцию с сервисами логирования (Sentry, Loggly). Это поможет быстро реагировать на сбои.

Можно добавить флаг успешного обновления с отметкой времени для отслеживания свежести данных.

Интерфейс в админке для управления обновлениями

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

Используйте стандартные API WordPress Settings API для создания удобного интерфейса.

Поддержка кэширования и оптимизация

Если данные используются на фронтенде, рекомендуется кэшировать результаты шорткода с помощью Transients API, чтобы избежать частых обращений к базе.

Примеры плагинов, которые можно использовать для автоматизации обновлений

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

  • Clearfy Pro — оптимизация и управление планировщиком задач WP-Cron.
  • WPRemark — для создания отзывов с возможностью автозаполнения, можно адаптировать для обновления данных.

Итоги

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

Такой подход позволит сделать сайт динамичным, актуальным и снизить нагрузку на администраторов.

Автоматизация записи в лог WordPress на разных событиях: практические примеры и плагины
03.12.2025
Как автоматизировать удаление старого контента в WordPress
03.04.2026
WooCommerce: автоматическое удаление неактивных корзин и заказов
11.05.2026
Как использовать WPRemark для автоматизации отзывов в WordPress
15.02.2026
Изменение URL для AJAX-запросов в WordPress без перезагрузки страницы
11.12.2025