wpmoney.ru wordpress WP Money

Как создать автоматический импорт статей в WordPress с помощью кода

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

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

Ручное добавление контента — трудоёмкий процесс, который занимает время и ресурсы. Автоматический импорт позволяет:

  • Экономить время на публикацию новых материалов.
  • Обеспечивать регулярное и стабильное обновление сайта свежим контентом.
  • Интегрировать данные из внешних систем, например, новостных агрегаторов, партнерских площадок или собственных баз.
  • Минимизировать ошибки при копировании и форматировании текста.

Чаще всего для импорта используют RSS-ленты, API или парсинг HTML. В зависимости от источника данных, будет варьироваться и способ реализации.

Основные способы импорта статей в WordPress

Импорт через RSS-ленты

RSS — простой и удобный формат для обмена контентом. WordPress из коробки умеет подписываться на RSS, но для автоматической публикации понадобится доработка.

Для импорта через RSS можно использовать класс fetch_feed() из WordPress и обработать полученные записи.

function wpmoney_fetch_and_import_rss() {
    include_once ABSPATH . WPINC . '/feed.php';
    $rss = fetch_feed('https://example.com/feed/');
    if (!is_wp_error($rss)) {
        $maxitems = $rss->get_item_quantity(5);
        $rss_items = $rss->get_items(0, $maxitems);
        foreach ($rss_items as $item) {
            $title = $item->get_title();
            $content = $item->get_content();
            // Проверяем, существует ли уже запись с таким заголовком
            $existing = get_page_by_title($title, OBJECT, 'post');
            if (!$existing) {
                // Создаем новую запись
                wp_insert_post([
                    'post_title' => $title,
                    'post_content' => $content,
                    'post_status' => 'publish',
                    'post_author' => 1
                ]);
            }
        }
    }
}
// Можно запускать по крону
add_action('wpmoney_hourly_import', 'wpmoney_fetch_and_import_rss');

Такой код можно привязать к cron-задаче WordPress, чтобы импорт выполнялся автоматически, например, каждый час.

Импорт через REST API внешнего сервиса

Если источник предоставляет API в формате JSON, можно использовать wp_remote_get() для получения данных и создавать записи.

function wpmoney_api_import_posts() {
    $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)) {
        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) {
                wp_insert_post([
                    'post_title' => $title,
                    'post_content' => $content,
                    'post_status' => 'publish',
                    'post_author' => 1
                ]);
            }
        }
    }
}
add_action('wpmoney_daily_import', 'wpmoney_api_import_posts');

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

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

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

function wpmoney_add_cron_schedule($schedules) {
    $schedules['hourly'] = [
        'interval' => 3600,
        'display' => __('Каждый час')
    ];
    return $schedules;
}
add_filter('cron_schedules', 'wpmoney_add_cron_schedule');

if (!wp_next_scheduled('wpmoney_hourly_import')) {
    wp_schedule_event(time(), 'hourly', 'wpmoney_hourly_import');
}

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

Рекомендации по безопасности и производительности

При автоматическом импорте важно учитывать:

  • Проверку уникальности — чтобы не создавать дубли. Используйте get_page_by_title или метаполя.
  • Форматирование и фильтрацию — обязательно очищайте входящие данные, применяйте sanitize_text_field, wp_kses_post.
  • Обработка ошибок — логируйте неудачные попытки, чтобы быстро исправлять проблемы.
  • Ограничение количества импортируемых записей за раз — чтобы не нагружать сервер.
  • Резервное копирование — перед внедрением автоматического импорта сделайте бэкап сайта.

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

Если хотите ускорить разработку, рассмотрите плагины с поддержкой автоматического импорта:

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

Для интеграции с этими плагинами часто достаточно настроить крон и параметры импорта в интерфейсе, что существенно упрощает задачу.

Пример расширения импорта с добавлением метаданных и категорий

Для более продвинутого импорта можно добавлять категории и метаданные к постам:

function wpmoney_advanced_import($title, $content, $category_slug, $meta_key, $meta_value) {
    $existing = get_page_by_title($title, OBJECT, 'post');
    if ($existing) {
        return;
    }
    $cat = get_category_by_slug($category_slug);
    $cat_id = $cat ? $cat->term_id : 0;
    $post_id = wp_insert_post([
        'post_title' => $title,
        'post_content' => $content,
        'post_status' => 'publish',
        'post_author' => 1,
        'post_category' => $cat_id ? [$cat_id] : []
    ]);
    if ($post_id && $meta_key) {
        update_post_meta($post_id, $meta_key, $meta_value);
    }
}

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

Выводы по теме автоматического импорта статей в WordPress

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

×
Делай сайт лучше!!

-20% на премиум темы и плагины

Использовать скидку ⋙