wpmake.ru wordpress WPMake

Как сделать автоматический импорт контента в WordPress из внешнего источника

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

Варианты импорта контента в WordPress

Существует несколько распространённых способов импорта контента:

  • Импорт через RSS-ленты — подходит для новостных сайтов и блогов.
  • Импорт через REST API — когда внешний ресурс предоставляет собственный API.
  • Импорт из CSV или XML файлов — часто используется для товаров или каталогов.

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

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

Для большинства задач подойдет плагин WP All Import. Он поддерживает импорт из XML и CSV, позволяет настроить маппинг полей и запускается вручную или по расписанию.

Если нужен импорт из RSS, обратите внимание на плагин WP RSS Aggregator. Он позволяет импортировать новости из нескольких RSS-источников, автоматически создавать записи и настраивать обновления.

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

Пример простого импорта контента из RSS с помощью кода

Рассмотрим пример функции, которая импортирует заголовки и ссылки из RSS-ленты и создаёт записи в WordPress.

function wpmake_import_rss_feed() {
    $rss = fetch_feed('https://example.com/feed/');
    if (is_wp_error($rss)) {
        return;
    }
    $maxitems = $rss->get_item_quantity(5);
    $items = $rss->get_items(0, $maxitems);
    foreach ($items as $item) {
        $title = $item->get_title();
        $link = $item->get_permalink();

        // Проверяем, есть ли уже импортированная запись с таким заголовком
        $existing = get_page_by_title($title, OBJECT, 'post');
        if ($existing) continue;

        // Создаём новую запись
        wp_insert_post(array(
            'post_title' => $title,
            'post_content' => 'Источник: <a href="' . esc_url($link) . '" target="_blank">' . esc_html($link) . '</a>',
            'post_status' => 'publish',
            'post_author' => 1,
        ));
    }
}

// Запускаем функцию по расписанию
if (!wp_next_scheduled('wpmake_rss_import_hook')) {
    wp_schedule_event(time(), 'hourly', 'wpmake_rss_import_hook');
}
add_action('wpmake_rss_import_hook', 'wpmake_import_rss_feed');

Этот код подключается к RSS-ленте, получает последние 5 элементов, проверяет, нет ли уже таких записей и создаёт новые. Запуск происходит ежечасно через WP-Cron.

Импорт данных из REST API с обработкой JSON

Для более сложных источников, например, REST API с JSON, пример функции будет выглядеть так:

function wpmake_import_api_content() {
    $response = wp_remote_get('https://api.example.com/posts');
    if (is_wp_error($response)) {
        return;
    }
    $body = wp_remote_retrieve_body($response);
    $data = json_decode($body, true);
    if (empty($data)) {
        return;
    }

    foreach ($data as $item) {
        $title = sanitize_text_field($item['title']);
        $content = wp_kses_post($item['content']);

        // Проверка на дубликаты
        $existing = get_page_by_title($title, OBJECT, 'post');
        if ($existing) continue;

        wp_insert_post(array(
            'post_title' => $title,
            'post_content' => $content,
            'post_status' => 'publish',
            'post_author' => 1,
        ));
    }
}

if (!wp_next_scheduled('wpmake_api_import_hook')) {
    wp_schedule_event(time(), 'twicedaily', 'wpmake_api_import_hook');
}
add_action('wpmake_api_import_hook', 'wpmake_import_api_content');

Здесь мы получаем JSON-данные, обрабатываем их и создаем записи. Запуск настроен на два раза в день.

Обработка ошибок и логирование при импорте

Для стабильной работы важно добавлять обработку ошибок и логирование. Например, можно использовать функцию error_log() для записи ошибок в файл сервера или подключить сторонние библиотеки для логирования.

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

Автоматизация процесса с помощью WP-Cron и плагинов

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

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

Заключение

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

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

×
Сделай свой сайт крутым!

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

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