Функционал RSS-ленты встроен в WordPress по умолчанию, поскольку движок изначально рассчитан на блоги, а зачастую используется как информационные и новостные сайты. Если мы наберем в браузере наш_сайт.ру/feed — мы и увидим эту саму RSS-ленту. Говоря техническим языком, RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т.п. С помощью RSS ленты своего сайта можно информировать своих читателей о новых материалах на своем сайте, транслировать анонсы публикаций на сторонние сайты и сервисы, ускорять индексацию новых материалов и т.д. и т.п.
Программировать RSS-ленту для сайта на WordPress нет необходимости, она уже включена на Вашем блоге. Между тем, если мы попытаемся ее настроить или внести какие-либо изменения в ее работу, то будем очень удивлены, увидев в настройках WordPress (Настройки — Чтение) весьма скудный функционал:
- В RSS-лентах отображать последние (число) элементов
- Для каждой статьи в ленте отображать: а) Полный текст, б) Анонс
Не удивляйтесь, но это все!
Между тем, на практике возникают многочисленные ситуации, когда необходимо вмешаться в работу RSS-ленты на WordPress, а с таким богатым функционалом настройки RSS далеко не уедешь! Данная статья в какой-то мере призвана ответить на часто возникающие вопросы — по настройке и оптимизации RSS лент на сайтах WordPress.
- Какой урл у RSS ленты сайта WordPress?
- Как отключить RSS на сайте WordPress
- Отключаем RSS на WordPress с помощью плагина:
- Отключаем RSS на WordPress без плагина:
- Редирект RSS ленты на feedburner
- Запретить поисковикам индексировать RSS
- Добавить картинки (миниатюры) в RSS
- Как получить RSS ленту отдельной рубрики в WordPress
- Как получить комментарии отдельной записи WordPress в RSS
- Как получить в RSS материалы по отдельным меткам
- Как получить в RSS материалы отдельного автора
- Как получить в RSS материалы по результатам поиска
- Как исключить материалы категорий из RSS-ленты на WordPress
- Как исключить отдельные записи из RSS-ленты на WordPress
- Что делать, если RSS на WordPress содержит ошибки
- Как публиковать записи в RSS с задержкой
- Как добавить подписи к записям в RSS
- Как скрыть часть контента в RSS
Какой урл у 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 могут быть разными и я не сомневаюсь, что сил моих всех предусмотреть и на все дать ответ — нет! Между тем, я постарался дать ответы и рекомендации на часто встречающиеся в моей практике ситуации. Если Вы не нашли ответа на свою проблему, спрашивайте в комментариях… Любезно отвечу и постараюсь помочь!