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 могут быть разными и я не сомневаюсь, что сил моих всех предусмотреть и на все дать ответ — нет! Между тем, я постарался дать ответы и рекомендации на часто встречающиеся в моей практике ситуации. Если Вы не нашли ответа на свою проблему, спрашивайте в комментариях… Любезно отвечу и постараюсь помочь!

Понравилась статья? Поделиться с друзьями: