RSS лента в WordPress: все, что вы хотели спросить

Функционал RSS-ленты встроен в WordPress по умолчанию, поскольку движок изначально рассчитан на блоги, а зачастую используется как информационные и новостные сайты. Если мы наберем в браузере наш_сайт.ру/feed - мы и увидим эту саму RSS-ленту. Говоря техническим языком, RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т.п. С помощью RSS ленты своего сайта можно информировать своих читателей о новых материалах на своем сайте, транслировать анонсы публикаций на сторонние сайты и сервисы, ускорять индексацию новых материалов и т.д. и т.п.

Программировать RSS-ленту для сайта на WordPress нет необходимости, она уже включена на Вашем блоге. Между тем, если мы попытаемся ее настроить или внести какие-либо изменения в ее работу, то будем очень удивлены, увидев в настройках WordPress (Настройки - Чтение) весьма скудный функционал:

  • В RSS-лентах отображать последние (число) элементов
  • Для каждой статьи в ленте отображать: а) Полный текст, б) Анонс

Не удивляйтесь, но это все!

Настройка RSS в админке WordPress
Настройка RSS в админке WordPress

Между тем, на практике возникают многочисленные ситуации, когда необходимо вмешаться в работу RSS-ленты на WordPress, а с таким богатым функционалом настройки RSS далеко не уедешь! Данная статья в какой-то мере призвана ответить на часто возникающие вопросы - по настройке и оптимизации RSS лент на сайтах WordPress.

Какой урл у RSS ленты сайта WordPress?

Чтобы не запутаться в этом вопросе, начать надо с того, что WordPress отдает RSS ленту в разных форматах, поэтому и ссылки будут разными:

  • ваш_сайт.ru/feed (RSS 2.0)
  • ваш_сайт.ru/feed/rdf (RDF/RSS 1.0)
  • ваш_сайт.ru/feed/atom (Atom format)

В зависимости от настроек Вашего сайта, они могут открываться по следующим адресам:

  • ваш_сайт.ru/wp-rss2.php (RSS 2.0 format)
  • ваш_сайт.ru/wp-rdf.php (RDF/RSS 1.0 format)
  • ваш_сайт.ru/wp-atom.php (Atom format)

или

  • ваш_сайт.ru/?feed=rss2 (RSS 2.0 format)
  • ваш_сайт.ru/?feed=rdf (RDF/RSS 1.0 format)
  • ваш_сайт.ru/?feed=atom (Atom format)

В WordPress также встроена возможность экспорта комментариев в RSS ленту. Ссылки будут доступны по адресам (для разных форматов RSS):

  • ваш_сайт.ru/comments/feed  (RSS 2.0 format)
  • ваш_сайт.ru/comments/atom  (Atom format )
  • ваш_сайт.ru/comments/rdf  (RDF/RSS 1.0 format)

Как отключить RSS на сайте WordPress

У некоторых вебмастеров возникает необходимость отключить RSS ленту на сайте, сделать ее полностью недоступной. Это можно сделать, как с помощью плагина, так и без плагина.

Отключаем RSS на WordPress с помощью плагина:

Плагины - Добавить новый - Disable RSS (активируем плагин). Этот плагин отключит все RSS/Atom/RDF каналы на вашем сайте.

Отключаем RSS на WordPress без плагина:

В файл functions.php вашей текущей темы добавляем строчки кода:

function fb_disable_feed() {
wp_redirect(get_option('siteurl'));//будет осуществляться редирект на главную страницу Вашего сайта
}
add_action('do_feed', 'fb_disable_feed', 1);
add_action('do_feed_rdf', 'fb_disable_feed', 1);
add_action('do_feed_rss', 'fb_disable_feed', 1);
add_action('do_feed_rss2', 'fb_disable_feed', 1);
add_action('do_feed_atom', 'fb_disable_feed', 1);
add_action('do_feed_rss2_comments', 'fb_disable_feed', 1);
add_action('do_feed_atom_comments', 'fb_disable_feed', 1);
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );

Редирект RSS ленты на feedburner

Многие вебмастера пользуются такими вещами как feedburner или другими перепрожигами RSS лент. В таком случае возникает необходимость редиректа основной ленты в купе с отключением родной RSS. Такая ситуация решается добавлением в файл functions.php вашей текущей темы строчек кода:

function fb_disable_feed() {
wp_redirect('http://feeds.feedburner.com/vash_feedburner');exit;//здесь прописать урл на ваш канал в feedburner 
}
add_action('do_feed', 'fb_disable_feed', 1);
add_action('do_feed_rdf', 'fb_disable_feed', 1);
add_action('do_feed_rss', 'fb_disable_feed', 1);
add_action('do_feed_rss2', 'fb_disable_feed', 1);
add_action('do_feed_atom', 'fb_disable_feed', 1);
add_action('do_feed_rss2_comments', 'fb_disable_feed', 1);
add_action('do_feed_atom_comments', 'fb_disable_feed', 1);
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );

Запретить поисковикам индексировать RSS

Часто можно обнаружить в поиске Гоши или Яши странички, в урлах которых встречается /feed/. Разумеется, это мусор и Вам нужно запретить его индексировать (так как поисковики ценят Ваш сайт за полезный контент)! Сделать это можно добавлением в robots.txt строчек:

User-agent: *
Disallow: /feed

Добавить картинки (миниатюры) в RSS

Родная WordPress цепляет в RSS лишь текст, несмотря на то, что в самих записях зачастую используются картинки и миниатюры. Но все мы знаем, что с картинками анонс куда привлекательнее и кликабельнее, поэтому задача решается добавлением следующего кода в functions.php вашей текущей темы (данный код добавит в RSS ленту вашего сайта миниатюры с записей):

function insertThumbnailRSS($content) {
 global $post;
 if ( has_post_thumbnail( $post->ID ) ){
get_the_post_thumbnail(array(150,100));
 $content = '<div style="float: left; margin: 0px 10px 5px 0px;">'. get_the_post_thumbnail( $post->ID, 'thumbnail' ) . '</div>' . $content;
 }
 return $content;
}
add_filter('the_excerpt_rss', 'insertThumbnailRSS');
add_filter('the_content_feed', 'insertThumbnailRSS');

Как получить RSS ленту отдельной рубрики в WordPress

Для того чтобы получить отдельный RSS поток записей из отдельной рубрики на сайте под управлением WordPress, достаточно дописать в адрес текущей рубрики /feed

Например, ваш_сайт.ru/category/news/feed

Если требуется подключить в RSS несколько рубрик с сайта, это можно сделать их перечислением через запятую:

ваш_сайт.ru/category/news,pogoda,sport/feed

Как получить комментарии отдельной записи WordPress в RSS

Для того чтобы получить отдельный RSS поток комментариев какой-либо записи на сайте под управлением WordPress, достаточно дописать в адрес текущей записи/страницы /feed

Например, ваш_сайт.ru/название_статьи.html/feed

Как получить в RSS материалы по отдельным меткам

Для того чтобы получить в RSS записи, в которых встречаются отдельные метки, достаточно прописать метки в урле (в примере ниже мы получим лишь записи с тегом seo (не забывайте о том, что их можно перечислять через запятую):

Например, ваш_сайт.ru/tag/seo/feed

Как получить в RSS материалы отдельного автора

Если сайт на WordPress большой, иногда полезно получить в RSS материалы отдельного автора. Для того чтобы получить в RSS записи отдельного автора, достаточно прописать имя автора в урле (в примере ниже мы получим лишь записи, у которых автор admin):

ваш_сайт.ru/author/admin/feed/

Как получить в RSS материалы по результатам поиска

Можно получить в RSS на WordPress и записи по результатам какого-либо поискового запроса. Для этого нужно сформировать урл по принципу (в примере, выводим в RSS записи, найденные по запросу "seo"):

ваш_сайт.ru/?s=seo&feed=rss2

Как исключить материалы категорий из RSS-ленты на WordPress

Бывают ситуации, что в RSS не нужно отдавать материалы некоторых рубрик (например, некоторых не целевых рубрик, рубрик с продажными статьями и т.д.). Исключить отдельные рубрики из ленты можно по id (id рубрики можно узнать в админке, наведя мышку на название рубрике и подсмотрев значение tag_ID в строке состояния браузера). Данный код добавляем в файл functions.php текущей темы:

function ac_exclude_from_rss($query) {
    $cats_to_exclude = array( 64, 16); //перечисляем через запятую id рубрик, материалы которых нужно исключить из RSS
    if ($query->is_feed && !$query->is_category($cats_to_exclude) ) {
        set_query_var('category__not_in', $cats_to_exclude);
    }
    return $query;
}
add_filter('pre_get_posts','ac_exclude_from_rss');

Как исключить отдельные записи из RSS-ленты на WordPress

Бывают и ситуации, когда нужно исключить из RSS-ленты отдельно взятые записи, но поскольку они могут находится в разных рубриках, отключение целой рубрики из RSS не поможет. Также нецелесообразно отключать записи каждый раз редактированием файла functions.php, поэтому придется ставить плагин, чтобы удобно из админки в редакторе каждой записи опционально включать и выключать запись из RSS ленты.

Плагины - Добавить новый - Skip RSS (плагин выключает отдельно взятые записи из RSS-ленты WordPress

Что делать, если RSS на WordPress содержит ошибки

Не часто, но текст в записях может содержать спецсимволы, которые попадая в RSS, ломают ее. Бывают и другие ситуации: RSS не запускается и все тут. Возникают ошибки, типа:

XML Parsing Error: XML or text declaration not at start of entity

или

line 1, column 1: Blank line before XML declaration

... и другие

Такую RSS могут прочитать не все, поэтому требуется ее ремонт. Для восстановления работоспособности и профилактики от подобных случаев, есть плагин "Fix My Feed RSS Repair"

Как публиковать записи в RSS с задержкой

Запись после публикации на сайте WordPress автоматически появляется в RSS. Бывают случаи, когда нужно этому воспрепятствовать: например, вы хотите, чтобы о Вашей новой записи узнали сначала читатели на сайте, а лишь потом все подписчики по RSS и различные ридеры, которые читают Вашу ленту! Для таких целей подойдет плагин "Feed Pauser" -  он дает возможность задать задержку, с которой будут публиковаться записи в RSS (также есть возможность исключения определенных записей из RSS).

Как добавить подписи к записям в RSS

Материалы, отдаваемые в RSS, можно подписать, а также ограничить по размеру, что отчасти направлено на борьбу с воровством контента (в паре с вышеназванным плагином "Feed Pauser"), которое зачастую как раз и происходит с помощью RSS-лент. В этой связи не вышел из моды, хоть и старый, но действенный плагин  Ozh Better Feed

Как скрыть часть контента в RSS

Наконец, Вам понадобилось скрыть часть контента в RSS, к примеру, вы публикуете в записи ответ на какой-то вопрос, но не хотите чтобы он попал в RSS, а был виден лишь непосредственно на сайте. Вам понадобится плагин "RSSless". Теперь, при создании записи, обрамите (в HTML-режиме редактора) нужный текст записи в теги [rssless]...[/rssless] и он не появится в RSS ленте.

...Естественно, ситуации c RSS на сайтах WordPress могут быть разными и я не сомневаюсь, что сил моих всех предусмотреть и на все дать ответ - нет! Между тем, я постарался дать ответы и рекомендации на часто встречающиеся в моей практике ситуации. Если Вы не нашли ответа на свою проблему, спрашивайте в комментариях... Любезно отвечу и постараюсь помочь!

Оцените материал:
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (13 голоса, рейтинг: 4,77 из 5)
Загрузка...

Вячеслав - типичный интернетчикВячеслав Скоблей (ака files) - типичный интернетчик. Скитаюсь интернетом, пишу на PHP, увлекаюсь созданием веб-сайтов на Wordpress, решаю многочисленные проблемы, которые до появления интернета не существовали...

Специализируюсь на безопасности сайтов: защищаю сайты от атак и взломов, занимаюсь лечением вирусов на сайтах и профилактикой...

Наверняка у Вас есть вопросы, просьбы или пожелания. Не стесняйтесь спросить, я отвечаю всегда быстро...

35 комментарий

  1. Подскажите, пожалуйста, как сократить количество символов анонса в RSS-ленте WordPress?

    1. Вячеслав Скоблей says:

      Анонс в RSS формируется функцией the_excerpt_rss(). Чтобы изменить размер выводимых символов (по умолчанию - установленный размер короткого описания - 55 слов контента), нужно вызвать хук в function.php текущем темы:

      function seozona_function_rss( $output ) {
      return mb_substr(strip_tags($output), 0, 150 );
      }
      add_filter( 'the_excerpt_rss', 'seozona_function_rss' );

      Число 150 в данном коде меняете на свое. 150 - это число символов! Это число может быть лишь меньше the_excerpt (55 слов)

  2. Ильдар says:

    А у меня постоянно появляются страницы с переадресацией вот с такие: ?page_id=554&pre . Как с этим можно побороться?

    1. Вячеслав Скоблей says:

      Слишком мало данных, чтобы Вам помочь.

      1. Ильдар says:

        Вот такие страницы

        1. Вячеслав Скоблей says:

          Это так называемые "короткие ссылки", чтобы их отключить, добавьте в файл functions.php вашей текущей темы:

          remove_action( 'wp_head', 'wp_shortlink_wp_head' );

          Также в robots.txt не помешает добавить строки:

          Disallow: */embed*
          Disallow: */wp-json*
      2. ильдар says:

        Я уже нашел ответ в интернете, но за отзывчивость спасибо. Кликну вам по рекламе (-:

  3. Hunters says:

    привет, у меня есть сайт и я парсю rss с других сайтов, парсинг приходит с непонятной фразой которую описали тут выше "впервые появилась"
    понятно что это прописано в настройках сайта с которого идет парсинг... но как мне убрать эту запись на своем сайте?
    в настройках моего рсс парсера есть такая функция

    но я не понимаю что там нужно прописывать... сломал уже голову, облазил все источники... какое то регулярное выражение то ли просит составить, то ли код вписать для удаления этого текста или замены его на другой..

    буду рад любой помощи или совету.
    спасибо.

  4. Олег says:

    не подскажешь, уважаемый, есть ли метод спарсить весь конетнт по rss? 20 записей маловато(

    1. Вячеслав Скоблей says:

      Смотрите в сторону Sitemap
      Инструмент для извлечения урлов из карты https://tools.seo-zona.ru/sitemaps.html

  5. says:

    добрый день
    в последнее время, переодически исчезает файл index.php
    не подскажете в чем может быть проблема

    1. Вячеслав Скоблей says:

      Версии две:

      • нехватка места на диске
      • вирус на сайте
  6. Владимир says:

    Приветствую! Спасибо за полезный материал. А не подскажите как сделать рсску отдельную в случае когда есть рубрики и их подрубрики?
    Например есть такая структура рубрик:
    рубрика Новости - /news
    подрубрика Регионы - /news/region
    подрубрика Мир - /news/mir
    рубрика Проекты - /projects
    подрубрика Наше - /projects/nashe
    подрубрика Здоровье - /projects/zdorovie

    возможно ли сделать ссылку на рсску в которой будут только записи из Мир и Наше, получается типа такого .../news/mir,/projects/nashe/feed но оно понятное дело не работает. такой вариант записи тоже не катит .../mir,nashe/feed

  7. Яндекс.Новости ругаются: требуют исключить из экспортного файла технические данные (в частности, текст, который приводится в конце каждой новости - "Отправить в редакцию свою новость!"). Вас не затруднит подсказать, как это реализовать?

    1. Вячеслав Скоблей says:

      Найдите в плагине переменную, в которую передается содержимое поста. Допустим, это $yandexfull. Прочитаем эту переменную и если найдем в ней "«Отправить в редакцию свою новость!»", то вырежем:

      $yandexfull = str_replace('«Отправить в редакцию свою новость!»','', $yandexfull);
  8. Fi says:

    Добавить картинки (миниатюры) в RSS

    После добавления твоего ёб... кода пропали иконки RSS. Теперь думаю как вернуть, удаление кода не помогло. Советчики херовы

    1. Вячеслав Скоблей says:

      Если код убрали, то и функция не будет работать. Никуда ничего не записывается и не может ломаться. Если проблема не исчезла, смотрите в сторону кеша (как в браузере, так и на сайте).

  9. says:

    Здравствуйте. Скажите, как открыть ленту RSS-канал - для яндекса Турбо-страницы. Возникает ошибка - Ошибка валидации - Не удалось скачать RSS-канал (N / aURL запрещён к индексированию тегом noindex)?

    1. Вячеслав Скоблей says:

      Используйте плагин Yandex.News Feed by Teplitsa - у Турбо-страниц Яндекса свой формат.

      1. says:

        Спасибо, работает нормально.
        Есть плагин которые бесплатно дает возможность подписаться на новости и обновление?

        1. Вячеслав Скоблей says:

          feedburner.google.com

  10. says:

    Спасибо, очень полезная статься. С одной проблемой столкнулся, нигде не могу найти ответ. Вот такой rss получается на выходе: http://joxi.ru/RmzbXJquWaLZvm
    Не могу понять что это в конце описания 'Запись ... впервые появилась' и как его убрать. Вы не в курсе?

    1. Вячеслав Скоблей says:

      Скорее всего это встроено в функционал вашей темы (там же и сможете вырезать)

      1. says:

        Спасибо.
        Тема самописная, моя. Отключал все плагины, очищал полностью function.php все оставалось по прежнем. Может оно где-то кешируется?

        1. Вячеслав Скоблей says:

          1) Смените на время тему сайта (на любую), проверьте.
          2) Если не исчезло на первом этапе, переименуйте папку plugins в plugins_ Проверьте, потом верните старое значение названия папки.

          Так вы определите источник для дальнейшего поиска. В первом случае - источник ТЕМА. Во-втором - какой-то ПЛАГИН

          1. says:

            В принципе я и первый раз по сути делал аналогичные действия.
            Но и после тех действий что вы написали, в feed ничего не изменилось.

            1. Вячеслав Скоблей says:

              Если не изменилось ничего, версий остается две:
              - у вас не чистая сборка WP
              - данные RSS кешируются.

    2. says:

      Эту запись добавляет модуль SEO by Yoast. В настройках в разделе "Дополнительно" - "RSS" можно выключить.

      1. k0fe says:

        Спасибо тебе, добрый человек, пол-часа искал эту гадость!

        1. Галина says:

          как выключить, если кнопки нет?..... подскажите, плиз...

          1. Вячеслав Скоблей says:

            Галина, о какой кнопке речь?

    3. says:

      Дополнительно - Yoast SEO - Настройки RSS канала - Контент ставить после каждого сообщения: Запись %%POSTLINK%% впервые появилась %%BLOGLINK%%.

  11. Уже отключил. Есть еще вопрос. Сейчас есть RSS лента которая встроена в вордпресс. Но между картинкой текстом очень малый промежуток. Один товарищ советует вставить style="padding:0 10px 5px 0; только куда он не сказал. Вставлял в добавку к файлу functions , где прописывается добавление картинок, но ничего не изменилось.

  12. как отключить FeedBurner

    1. Отключить FeedBurner от чего?

Добавить комментарий

Ваш адрес email не будет опубликован.