Как настроить RSS-фид для ВКонтакте и почему не всегда видны изображения

В современном мире IT‑специалисты, блогеры и просто энтузиасты стремятся максимально автоматизировать рутину. Одним из таких «автоматизированных» инструментов является импорт ленты RSS в ВКонтакте. Казалось бы, всё просто: настроили RSS (Really Simple Syndication) на сайте — и ВК будет брать оттуда записи. Но на практике всё оказывается далеко не так гладко, особенно когда речь заходит об изображениях.

В этой статье мы разберём, как создать кастомный RSS‑фид в WordPress, почему картинки иногда не доходят до ВК и что можно сделать, чтобы максимально увеличить шансы на отображение изображений.


1. Создание собственного RSS‑фида в WordPress

1.1. Регистрируем новый фид

По умолчанию WordPress генерирует стандартный фид /feed/ для постов. Но если вы хотите включить туда и записи из кастомного пост‑типа (например, project), или выдать их не в стандартную ленту, а в отдельную /feed/vkontakte/, нужно зарегистрировать новый RSS‑канал. Для этого в functions.php (или своём плагине) пишем:

add_action('init', 'krvshn_add_vkontakte_feed');
function krvshn_add_vkontakte_feed() {
    add_feed('vkontakte', 'krvshn_render_vkontakte_feed');
}

Здесь мы говорим WordPress: «Привет, теперь у нас есть фид, доступный по адресу /feed/vkontakte/. Управлять выводом в нём будет функция krvshn_render_vkontakte_feed()».

1.2. Генерируем контент фида

Во второй части кода мы задаём, какие посты (и сколько) следует выводить, и как должна выглядеть структура XML. Например:

function krvshn_render_vkontakte_feed() {
    $args = array(
        'post_type'      => array('post', 'project'),
        'posts_per_page' => 10,         // Кол-во записей в фиде
        'post_status'    => 'publish',  // Только опубликованные
    );
    $feed_query = new WP_Query($args);

    header('Content-Type: application/rss+xml; charset=' . get_option('blog_charset'), true);
    echo '' . "\n";
    ?>

  
    <?php bloginfo_rss('name'); ?>
    
    
    

    have_posts()): ?>
      have_posts()): $feed_query->the_post(); ?>
        
          <![CDATA[<?php the_title_rss(); ?>]]>
          
          
          
          
          ]]>
        
      
    
  

    

Этот упрощённый шаблон уже даст вам ленту с 10 последними записями из обоих типов контента (стандартный пост и project). Но пока ничего не сказано про полные тексты и изображения.


2. Выводим полный контент и изображения

2.1. Используем тег

Чтобы в RSS действительно попадала вся статья, принято использовать тег из пространства имён content:. Вот пример фрагмента кода:


]]>

Так RSS‑ридеры и некоторые соцсети (например, Telegram) могут подтянуть весь HTML без обрезки.

2.2. Проблемы с импортом изображений во ВКонтакте

ВКонтакте, к сожалению, не всегда показывает изображение внутри текста поста, даже если оно есть в content:encoded. Иногда оно полностью игнорирует HTML (особенно теги ) и выводит лишь «голый» текст. Порой соцсеть может попытаться найти или и вывести картинку‑превью, но и это бывает ненадёжно: алгоритмы ВК могут меняться, а изображения — «пропадать по дороге».

Наиболее «правильный» способ подсказать RSS‑агрегаторам, что изображение — это обложка записи, — использовать тег :

if (has_post_thumbnail()) {
    $thumbnail_id  = get_post_thumbnail_id();
    $thumbnail_url = wp_get_attachment_image_url($thumbnail_id, 'full');
    $mime_type     = get_post_mime_type($thumbnail_id);
    $file_path     = get_attached_file($thumbnail_id);
    $file_size     = $file_path && file_exists($file_path) ? filesize($file_path) : 0;
    ?>
    
    

Многие RSS‑читалки (и некоторые соцсети) используют как «подсказку» для вывода обложки или карточки поста. Но ВК, увы, не всегда это учитывает при импортировании.


3. Почему ВКонтакте «забирает» не все картинки?

  1. Ограничения платформы. Импорт RSS в ВКонтакте — функция, которая периодически меняется. Иногда ВК вовсе отказывается обрабатывать теги внутри или .
  2. Фильтрация HTML. Чтобы «бороться со спамом и потенциальными угрозами», ВКонтакте может «вычищать» все HTML‑теги, кроме самых базовых.
  3. Неактуальность . VK в разные периоды истории то обращает, то не обращает внимания на .
  4. Перекрытие механикой Open Graph. Когда мы вручную публикуем ссылку в ВК, соцсеть смотрит на meta‑теги og:image, og:description, og:title. Но при автоматическом RSS‑импорте она может проигнорировать Open Graph и брать данные напрямую из ленты (где часто «не видит» картинки).

4. Альтернативы: автопостинг через API

Если вам принципиально важно, чтобы в постах ВК отображалась миниатюра и полный текст с изображениями, лучше отказаться от простого RSS‑импорта и перейти на автопостинг через API. Есть плагины (например, NextScripts: Social Networks Auto‑Poster, Blog2Social, Jetpack Social и другие), которые напрямую отправляют пост из WordPress в ВК со всей нужной разметкой.

Преимущества:

  • Гарантированное прикрепление обложки и/или изображений.
  • Возможность кастомизировать текст, ссылки и прочие поля при публикации.
  • Поддержка отсроченной публикации.

Недостаток — такая интеграция требует настроек и авторизации через приложение ВКонтакте или через сервис‑посредник. Но результат обычно лучше, чем «сырые» RSS‑импорты.


5. Вывод

  1. Сгенерировать RSS для ВК — дело несложное (несколько строк кода в functions.php).
  2. Вывести полную статью и картинки — тоже реально, используя и .
  3. Гарантированно увидеть картинки во ВКонтакте? Это либо везение (если ВК в данный момент корректно обрабатывает /HTML), либо использование плагинов автопостинга через API.

И здесь приходит инженерная логика: если что‑то не работает через «Syndication», попробуй «Integration». Иногда это надёжнее, чем надеяться на благосклонность ВК.


Новогодний юмор (и пожелания)

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

Желаем вам в новом году:

  • Поменьше багов, а если они и появятся — пусть чинятся легко, как wp_reset_postdata().
  • Чтобы серверные задачи решались «по щучьему велению», а клиенты выстраивались к вам в очередь, словно в очередь к символу года за подарками.
  • И, конечно же, ярких свершений, инновационных проектов и стабильного хостинга без 502‑х ответов!

С наступающим Новым годом!
Пусть ваша лента RSS будет полна интересных новостей, а ВКонтакте — красивыми картинками ваших постов!


blank
Обзор конфиденциальности

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