Автоматизация импорта контента в 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.