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

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

Почему нужен автоматический импорт постов в WordPress

Часто владельцы сайтов хотят обновлять контент без ручного копирования и вставки. Это актуально для:

  • Новостных сайтов — получать свежие новости с партнерских API или RSS.
  • Блогов с гостевым контентом — импортировать материалы от авторов.
  • Информационных порталов — обновлять обзоры, прайс-листы, каталоги.

Ручной импорт занимает много времени и может привести к ошибкам. Автоматизация сэкономит время и обеспечит регулярность публикаций.

Основные способы автоматического импорта

Использование RSS-каналов

RSS — самый простой способ получать контент из внешних источников. WordPress умеет работать с RSS, но встроенные возможности ограничены. Для автоматического создания постов из RSS лучше использовать плагины или собственный код.

Импорт через API

Если сайт-поставщик контента предоставляет REST API, можно написать скрипт, который будет обращаться к API, получать данные и создавать посты в WordPress.

Плагины для автоматического импорта

Вот несколько популярных плагинов для этой задачи:

  • WP Automatic — позволяет импортировать статьи из RSS, API, социальных сетей и других источников.
  • WP All Import — мощный инструмент для импорта данных в любые типы записей.

Но иногда удобнее написать легковесный скрипт под конкретную задачу.

Пример: автоматический импорт постов из RSS с помощью WP Cron

Ниже пример функции, которая раз в час будет проверять RSS-ленту и создавать новые посты из новых элементов.

function wp3ru_import_posts_from_rss() {
    $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_link();
        $content = $item->get_content();

        // Проверяем, есть ли уже такой пост
        $existing = get_posts(array(
            'title' => $title,
            'post_type' => 'post',
            'post_status' => 'publish'
        ));
        if (!empty($existing)) {
            continue; // пост уже есть
        }

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

// Регистрируем событие cron
if (!wp_next_scheduled('wp3ru_hourly_import')) {
    wp_schedule_event(time(), 'hourly', 'wp3ru_hourly_import');
}
add_action('wp3ru_hourly_import', 'wp3ru_import_posts_from_rss');

В этом примере мы используем WP Cron для запуска функции каждый час. Функция берет последние пять элементов из RSS и добавляет их как новые посты, если таких ещё нет.

Особенности и рекомендации при автоматическом импорте

Обработка дубликатов

Очень важно проверять, не импортирован ли уже материал — иначе будут дубли. В примере выше мы проверяем по заголовку. Для более точной проверки можно использовать уникальные идентификаторы из RSS или мета-поля.

Форматирование контента

Контент из внешних источников часто требует очистки или доработки. Можно использовать функции wp_strip_all_tags() для удаления HTML, или наоборот, парсить и форматировать в соответствии с требованиями вашего сайта.

Авторизация и безопасность

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

Интеграция с WPShop

Для управления импортом и расширенных возможностей можно использовать плагин WP Automatic. Он поддерживает множество источников и позволяет гибко настраивать расписание и фильтры.

Импорт из REST API: пример запроса и создания поста

Если источник предлагает REST API, можно получить данные так:

function wp3ru_import_posts_from_api() {
    $response = wp_remote_get('https://api.example.com/posts?limit=5');
    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) {
        // Проверяем по уникальному идентификатору
        $existing = get_posts(array(
            'meta_key' => 'external_id',
            'meta_value' => $item['id'],
            'post_type' => 'post',
            'post_status' => 'publish'
        ));
        if (!empty($existing)) {
            continue;
        }

        $post_id = wp_insert_post(array(
            'post_title' => sanitize_text_field($item['title']),
            'post_content' => wp_kses_post($item['content']),
            'post_status' => 'publish',
            'post_author' => 1
        ));

        if (!is_wp_error($post_id)) {
            update_post_meta($post_id, 'external_id', sanitize_text_field($item['id']));
        }
    }
}

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

Такой подход более гибкий и позволяет работать с любой структурой данных.

Как проверить и отладить автоматический импорт

Для отладки полезно вести логирование. Можно добавить запись в лог-файл или использовать встроенный журнал ошибок WordPress:

if (defined('WP_DEBUG') && WP_DEBUG) {
    error_log('Импорт постов: добавлен пост с ID ' . $post_id);
}

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

Выводы и советы

Автоматический импорт постов — мощный инструмент для наполнения сайта. Главное — правильно настроить фильтрацию, проверку дубликатов и расписание импорта. Начинайте с простых RSS и переходите к API, когда понадобится гибкость.

Если нужна готовая расширенная функциональность с удобным интерфейсом, обратите внимание на WP Automatic.

Как добавить внешний API в WordPress с помощью WPGPT
13.02.2026
Как избежать проблем с отображением WooCommerce после обновления темы
16.05.2026
Как убрать верхний и нижний padding в WordPress: практические решения и примеры кода
18.02.2026
Как использовать WPRemark для автоматического модерирования комментариев в WordPress
31.12.2025
Как исправить ошибку 429 в WooCommerce при автообновлении корзины
28.05.2026