Автоматический импорт контента в WordPress — частая задача, особенно если нужно регулярно обновлять сайт новыми постами из внешних источников, например, RSS-лент, API или других сайтов. В этой статье разберём, как настроить такой импорт с помощью плагинов и собственного кода, чтобы автоматизировать процесс и не тратить время на ручное добавление материалов.
Выбор метода импорта: плагины или собственный код
Для автоматического импорта постов можно использовать готовые решения — плагины, которые умеют забирать данные с разных источников и создавать записи в WordPress. Также можно написать собственный скрипт, который будет обращаться к API или RSS и создавать посты программно. Каждый метод имеет свои плюсы и минусы:
- Плагины — быстрый старт, минимум кода, есть настройки для расписания и фильтрации. Минус — ограниченная гибкость, возможность конфликтов с другими расширениями.
- Собственный код — максимальная кастомизация, можно адаптировать под любые требования, интегрировать с бизнес-логикой сайта. Минус — нужна разработка и поддержка.
Рассмотрим оба варианта на примерах.
Импорт постов из RSS с помощью плагина WP RSS Aggregator
Плагин WP RSS Aggregator — одно из лучших решений для импорта постов из RSS и Atom лент. Он позволяет импортировать новости, статьи и создавать посты на основе контента из фидов.
Установка и базовая настройка
1. Установите и активируйте плагин через админку WordPress.
2. Перейдите в меню «RSS Aggregator» и добавьте новый источник — укажите URL RSS-ленты.
3. Настройте параметры импорта: частоту обновления, количество импортируемых элементов, категории для новых постов.
Настройка автоматического создания записей
Для автоматического создания постов вместо простого отображения фидов необходимо подключить дополнение Feed to Post. Оно позволяет создавать полноценные записи с заголовком, содержимым и метаданными из RSS.
После установки и активации Feed to Post в настройках источника выберите опцию создания записей. Можно задать статус постов (например, черновик или опубликовано), автора, категорию и т.д.
Пример собственного решения: импорт постов из JSON API
Если источник предоставляет API с данными в формате JSON, можно написать собственный скрипт для импорта. Ниже пример функции, которая загружает данные, проверяет дублирование и создаёт новые посты:
function wpstandart_import_posts_from_api() {
$response = wp_remote_get('https://example.com/api/posts');
if (is_wp_error($response)) {
return;
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (empty($data) || !is_array($data)) {
return;
}
foreach ($data as $item) {
// Проверяем, есть ли уже пост с таким заголовком
$existing = get_page_by_title($item['title'], OBJECT, 'post');
if ($existing) {
continue; // пропускаем дубликаты
}
$post_data = array(
'post_title' => wpstandart_sanitize_text($item['title']),
'post_content' => wpstandart_sanitize_text($item['content']),
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(1), // ID категории
);
wp_insert_post($post_data);
}
}
function wpstandart_sanitize_text($text) {
return wp_kses_post(trim($text));
}Эту функцию можно запускать по крону WordPress, чтобы обновлять контент регулярно. Например, добавим задачу в cron:
if (!wp_next_scheduled('wpstandart_import_posts_cron')) {
wp_schedule_event(time(), 'hourly', 'wpstandart_import_posts_cron');
}
add_action('wpstandart_import_posts_cron', 'wpstandart_import_posts_from_api');Обработка изображений и метаданных при импорте
Важно не только импортировать текст, но и корректно обрабатывать изображения и дополнительные данные. Для этого нужно:
- Скачивать картинки и добавлять их в медиабиблиотеку WordPress.
- Привязывать миниатюры к постам.
- Добавлять метаданные, например, теги, пользовательские поля.
Пример загрузки изображения из URL и установки его как миниатюры:
function wpstandart_set_post_thumbnail_from_url($post_id, $image_url) {
require_once(ABSPATH . 'wp-admin/includes/image.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/media.php');
$tmp = download_url($image_url);
if (is_wp_error($tmp)) {
return false;
}
$file_array = array(
'name' => basename($image_url),
'tmp_name' => $tmp
);
$id = media_handle_sideload($file_array, $post_id);
if (is_wp_error($id)) {
@unlink($tmp);
return false;
}
set_post_thumbnail($post_id, $id);
return true;
}Вызывать эту функцию можно сразу после создания поста, передавая URL картинки из API.
Советы по производительности и безопасности
Автоматический импорт — это нагрузка на сервер, поэтому важно оптимизировать процесс:
- Используйте кэширование ответов API, чтобы не делать лишних запросов.
- Обрабатывайте импорт пакетами, чтобы избежать превышения лимитов памяти и времени выполнения.
- Обязательно фильтруйте и проверяйте все входящие данные для защиты от вредоносного контента.
- Используйте nonce и проверку прав пользователя, если импорт запускается через интерфейс.
Поддержка ошибок и логирование поможет быстро находить и исправлять проблемы в работе импорта.
Заключение: автоматизация импорта для эффективного управления контентом
Настройка автоматического импорта постов из внешних источников — важная задача для сайтов, которые регулярно обновляются. Использование плагинов, таких как WP RSS Aggregator, позволяет без глубоких знаний быстро реализовать импорт из RSS. Если нужен более гибкий подход — собственный код с использованием API и WordPress функций даст полный контроль над процессом.
Применяйте описанные техники и примеры, чтобы настроить стабильный и безопасный импорт, который сэкономит время и улучшит качество контента вашего сайта.