Автоматический импорт постов из внешних источников в WordPress — актуальная задача для сайтов, которые хотят регулярно обновлять контент без ручного добавления. Это может быть новостной портал, блог, агрегатор или корпоративный сайт, где контент поступает из API, XML или RSS-ленты. В этой статье мы подробно разберём, как реализовать такой импорт с помощью PHP, а также рассмотрим несколько полезных плагинов.
Почему нужен автоматический импорт и какие источники бывают
Автоматизация контент-обновления экономит время редакторов и гарантирует свежесть информации. Наиболее популярные внешние источники для импорта:
- RSS-ленты — стандартный способ получения новостных сводок;
- API внешних сервисов — например, новостных агрегаторов или сайтов с открытыми данными;
- XML или JSON-файлы — выгрузки с других систем;
- CSV и Excel — иногда данные приходят в табличном виде, их тоже можно преобразовать.
В зависимости от формата будет меняться способ обработки и импорта. В WordPress можно использовать стандартные функции для создания постов, а для регулярного запуска — WP-Cron или сторонние cron-задачи.
Создание базового решения для импорта постов из RSS с помощью PHP
Разберём простой пример — импорт заголовков и описаний из RSS-ленты. Начнём с функции, которая будет загружать ленту, парсить и создавать посты.
function wpfinder_import_posts_from_rss() {
$rss_url = 'https://example.com/feed/'; // URL вашей RSS-ленты
$rss = simplexml_load_file($rss_url);
if (!$rss) {
error_log('WPFinder: Не удалось загрузить RSS-ленту');
return;
}
foreach ($rss->channel->item as $item) {
$title = (string) $item->title;
$content = (string) $item->description;
$link = (string) $item->link;
// Проверяем, есть ли уже такой пост по заголовку
$existing = get_page_by_title($title, OBJECT, 'post');
if ($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);
}
}
Эту функцию можно запускать вручную или привязать к крону WordPress.
Запуск функции через WP-Cron
Чтобы импорт происходил регулярно, используйте WP-Cron. Добавим событие, которое будет срабатывать, например, раз в час.
add_action('wpfinder_hourly_import', 'wpfinder_import_posts_from_rss');
function wpfinder_activate_cron() {
if (!wp_next_scheduled('wpfinder_hourly_import')) {
wp_schedule_event(time(), 'hourly', 'wpfinder_hourly_import');
}
}
add_action('wp', 'wpfinder_activate_cron');
Таким образом, ваш сайт будет автоматически подгружать новые посты из указанной RSS-ленты каждый час.
Обработка импорта из API с JSON-ответом
Если внешний источник предоставляет API с JSON, процесс похож, но для запроса и разбора данных используем wp_remote_get и json_decode. Пример:
function wpfinder_import_posts_from_api() {
$response = wp_remote_get('https://api.example.com/posts');
if (is_wp_error($response)) {
error_log('WPFinder: Ошибка запроса API');
return;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (empty($data) || !isset($data['posts'])) {
error_log('WPFinder: Неверный формат данных API');
return;
}
foreach ($data['posts'] as $item) {
$title = sanitize_text_field($item['title']);
$content = wp_kses_post($item['content']);
if (get_page_by_title($title, OBJECT, 'post')) {
continue; // Уже есть
}
wp_insert_post(array(
'post_title' => $title,
'post_content' => $content,
'post_status' => 'publish',
'post_author' => 1,
));
}
}
Вызывайте эту функцию также через WP-Cron для автоматизации.
Полезные плагины для автоматического импорта
Если вы не хотите писать код, можно воспользоваться готовыми решениями:
- WP All Import — мощный плагин для импорта из XML, CSV и других форматов. Позволяет настраивать сложные правила импорта и поддерживает кастомные поля.
- Feedzy RSS Feeds Lite — лёгкий плагин для импорта и отображения RSS-лент. Есть премиум-версия с расширенными функциями.
- WP RSS Aggregator — удобен для создания новостных агрегаторов и автоматического получения контента.
Для более тонкой настройки импорта с этими плагинами можно использовать API плагинов и фильтры.
Рекомендации по безопасности и производительности
При автоматическом импорте важно учитывать несколько моментов:
- Проверяйте уникальность контента — чтобы избежать дублирования постов используйте проверку по заголовку или уникальному идентификатору.
- Обрабатывайте ошибки — логируйте ошибки запросов, чтобы быстро выявлять проблемы с внешним источником.
- Не перегружайте сервер — при большом объёме данных лучше делать импорт частями или с задержками.
- Используйте WP-Cron или системный cron — системный cron более надёжен, если на сайте много трафика.
- Обрабатывайте HTML и безопасность — фильтруйте входящие данные через
wp_kses_postили другие функции, чтобы избежать XSS-уязвимостей.
Интеграция с плагином Clearfy Pro для оптимизации импорта
Плагин Clearfy Pro (https://wpshop.ru/clearfy-pro/?utm_source=wpfinder.ru&utm_medium=article&utm_campaign=kak-sozdat-avtomaticheskij-import-postov-v-wordpress-iz-vneshnego-istochnika) помогает оптимизировать работу WordPress, включая управление WP-Cron и очистку базы данных. После настройки автоматического импорта полезно использовать Clearfy Pro для:
- Автоматической очистки временных данных и кеша, чтобы не разрасталась база данных;
- Управления задачами WP-Cron, чтобы импорт не запускался слишком часто и не создавал нагрузку;
- Отключения ненужных скриптов и функций, влияющих на производительность.
Это поможет сделать импорт не только автоматическим, но и максимально быстрым и безопасным.