Владельцы сайтов на WordPress часто используют контент из различных источников для наполнения своих ресурсов. Одним из популярных каналов является Яндекс.Дзен — платформа для публикации статей и блогов. В этой статье мы подробно разберём, как организовать автоматический импорт публикаций из Яндекс.Дзен в WordPress, что позволит сэкономить время и упростить управление контентом.
Почему стоит автоматизировать импорт из Яндекс.Дзен
Ручное копирование и вставка статей — трудоёмкий и непрактичный процесс, особенно если канал Яндекс.Дзен активно обновляется. Автоматический импорт позволит:
- Обновлять контент на сайте без вашего участия;
- Сохранять структуру и форматирование статей;
- Экономить время на рутинные операции;
- Интегрировать статьи в единый поток публикаций WordPress.
Для реализации такой автоматизации нам понадобится использовать RSS-канал Яндекс.Дзен или API, если он доступен, а также написать плагин или скрипт для WordPress.
Использование RSS Яндекс.Дзен для импорта статей
Яндекс.Дзен предоставляет RSS-ленты для каналов, которые можно использовать для получения свежих публикаций. Для начала нужно найти URL RSS вашего канала Яндекс.Дзен. Обычно он имеет вид:
https://zen.yandex.ru/media/idXXXXXXXXX/rss
Где idXXXXXXXXX — идентификатор вашего канала. Получив ссылку, можно настроить импорт в WordPress.
Плагины для импорта RSS в WordPress
В WordPress есть несколько плагинов, которые позволяют импортировать RSS и создавать записи на основе его данных. Рассмотрим два популярных варианта:
- WP RSS Aggregator — мощный и гибкий плагин для работы с RSS. Позволяет импортировать статьи из ленты и создавать записи или кастомные типы записей.
- Feedzy RSS Feeds — простой в использовании, поддерживает автоматический импорт и обновление контента.
В обоих плагинах можно настроить расписание обновлений и фильтрацию по ключевым словам.
Пример кода для импорта RSS с помощью wpbook_import_yandexdzen()
Для более тонкой настройки можно создать собственный плагин или добавить код в functions.php темы. Ниже пример простой функции, которая импортирует статьи из RSS Яндекс.Дзен и создаёт записи в WordPress:
function wpbook_import_yandexdzen() {
$rss = fetch_feed('https://zen.yandex.ru/media/idXXXXXXXXX/rss');
if (is_wp_error($rss)) {
error_log('Ошибка при получении RSS: ' . $rss->get_error_message());
return;
}
$maxitems = $rss->get_item_quantity(10); // Максимум 10 статей
$rss_items = $rss->get_items(0, $maxitems);
foreach ($rss_items as $item) {
$title = $item->get_title();
$content = $item->get_content();
$link = $item->get_link();
// Проверяем, существует ли уже запись с таким заголовком
$existing = get_page_by_title($title, OBJECT, 'post');
if ($existing) continue;
// Создаём запись
$post_data = array(
'post_title' => $title,
'post_content' => $content . '<p>Источник: <a href="' . esc_url($link) . '" target="_blank">Яндекс.Дзен</a></p>',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'post',
);
wp_insert_post($post_data);
}
}
// Запуск по крону или вручную
// wpbook_import_yandexdzen();Этот код можно дополнить обработкой категорий, тегов, изображений и метаданных, а также автоматизировать запуск с помощью WP-Cron.
Автоматизация запуска импорта с помощью WP-Cron
Чтобы импорт происходил регулярно, настроим задачу WP-Cron. Добавьте в functions.php следующий код:
function wpbook_schedule_yandexdzen_import() {
if (!wp_next_scheduled('wpbook_yandexdzen_import_event')) {
wp_schedule_event(time(), 'hourly', 'wpbook_yandexdzen_import_event');
}
}
add_action('wp', 'wpbook_schedule_yandexdzen_import');
add_action('wpbook_yandexdzen_import_event', 'wpbook_import_yandexdzen');Это заставит WordPress запускать функцию импорта каждый час. При необходимости можно изменить частоту на 'twicedaily' или 'daily'.
Обработка изображений из Яндекс.Дзен
Обычно в RSS из Яндекс.Дзен есть ссылка на изображения, которые желательно импортировать и установить как миниатюру записи. Для этого нужно доработать функцию импорта, добавив загрузку и привязку картинки:
function wpbook_import_yandexdzen() {
$rss = fetch_feed('https://zen.yandex.ru/media/idXXXXXXXXX/rss');
if (is_wp_error($rss)) return;
$maxitems = $rss->get_item_quantity(10);
$rss_items = $rss->get_items(0, $maxitems);
foreach ($rss_items as $item) {
$title = $item->get_title();
$content = $item->get_content();
$link = $item->get_link();
if (get_page_by_title($title, OBJECT, 'post')) continue;
// Получаем ссылку на изображение из RSS (пример для стандартного элемента enclosure)
$enclosure = $item->get_enclosure();
$image_url = $enclosure ? $enclosure->get_link() : '';
$post_data = array(
'post_title' => $title,
'post_content' => $content . '<p>Источник: <a href="' . esc_url($link) . '" target="_blank">Яндекс.Дзен</a></p>',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'post',
);
$post_id = wp_insert_post($post_data);
if ($image_url && !is_wp_error($post_id)) {
$image_id = wpbook_media_sideload_image($image_url, $post_id);
if (!is_wp_error($image_id)) {
set_post_thumbnail($post_id, $image_id);
}
}
}
}
function wpbook_media_sideload_image($file, $post_id) {
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
$media = media_sideload_image($file, $post_id, null, 'id');
return $media;
}Этот пример загружает первое вложенное изображение и устанавливает его как миниатюру записи.
Альтернативы: использование плагина WP All Import
Если RSS не подходит или нужен более сложный импорт, полезно рассмотреть плагин WP All Import. Он позволяет настраивать импорт из XML, CSV и других форматов, поддерживает сложные правила обработки и автоматизацию.
С его помощью можно импортировать данные из выгрузок Яндекс.Дзен, если вы сможете получить экспорт в нужном формате.
Особенности и возможные проблемы
При автоматическом импорте следует учитывать:
- Проверяйте уникальность контента, чтобы избежать дублирования;
- Соблюдайте авторские права и правила Яндекс.Дзен;
- Настраивайте корректное отображение ссылок на источник;
- Регулярно проверяйте логи и работу WP-Cron;
- Оптимизируйте нагрузку, чтобы не перегружать сервер при частом импорте.
Если на сайте используется плагин Clearfy Pro, он поможет оптимизировать работу и снизить влияние на производительность.