10 полезных RSS-приемов для WordPress

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

Рассмотрим 10 полезных и малоизвестных RSS приемов для WordPress. В каждом пункте статьи описывается проблема и предлагается ее решение. При этом каждое решение подробно описано, чтобы вы могли не просто решить свои проблемы, связанные с RSS, но и при этом понимали, что вы делаете. Таким образом, вы сами будете модифицировать свою тему WordPress, а не наполнять ее непонятными исходными кодами.

1. Контролируйте время появления ваших постов в RSS

Контролируйте время появления ваших постов в RSS
Проблема. Бывало ли у вас такое, что вы опубликовали статью и сразу же заметили ошибку? Конечно же, вы можете исправить ошибку, но есть другая проблема: статья уже опубликована в вашем RSS фиде. Чтобы избежать подобных проблем, используйте следующий рецепт, чтобы создать задержку между публикацией поста и его появлением в RSS фиде.

Решение. Для использования этого приема просто вставьте следующий код в файл function.php вашей темы. Если в вашей теме нет такого файла, создайте его.

function publish_later_on_feed($where) {
global $wpdb;if ( is_feed() ) {
$now = gmdate('Y-m-d H:i:s');
$wait = '5'; // Установка задержки
$device = 'MINUTE'; // MINUTE (минута), HOUR (час), DAY (день), WEEK (неделя), MONTH (месяц), YEAR (год)
$where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
}
return $where;
}
add_filter('posts_where', 'publish_later_on_feed');

Объяснение. Указанный выше код добавит 5-минутную задержку между публикацией поста в вашем блоге и его появлением в RSS фиде. Для изменения времени задержки измените значение переменной $wait или $device.

2. Редирект фидов WordPress на фиды FeedBurner

Редирект фидов WordPress на фиды FeedBurner
Проблема. Блоггер-новичок обычно начинает пользоваться сервисом FeedBurner только после того, как увидел его во многих других блогах, и понял, насколько полезен этот сервис. Новички регистрируются и начинают им пользоваться, но их более ранние подписчики остаются в подписке на WordPress-фид, который тогда был установлен по умолчанию.

Еще одна проблема: часто ли вы меняете свою тему? Если да, то вам, наверное, уже надоело редактировать каждое обращение к bloginfo(’rss2_url’) и менять его на URL своего FeedBurner-фида.

Решение. Есть простое решение обеих указанных выше проблем: используйте переадресации сервера. Создайте резервную копию файла .htaccess, который находится в корневом каталоге вашего веб-сервера.

Отредактируйте файл .htaccess, добавив в него следующий код. Не забудьте заменить URL фида своим URL-адресом.

# temp redirect wordpress content feeds to feedburner
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/yourblog [R=302,NC,L]
</IfModule>

Сохраните файл. Все готово!

Объяснение. Каждый раз, когда пользователь нажимает ссылку http://www.yourblog.com/feed, он перенаправляется по адресу http://feeds.feedburner.com/yourblog. Так вы никогда не потеряете подписчика, даже если вы будете менять свою тему по два раза в день, и вам больше не придется вручную редактировать ссылки на RSS фид.

3. Помещайте рекламу (или что угодно) в свой RSS фид

Помещайте рекламу (или что угодно) в свой RSS фид
Проблема. Сейчас все больше и больше людей зарабатывают на RSS фиде, в том числе и многие блоггеры, которые хотят максимально увеличить свой доход. FeedBurner может поместить рекламу AdSense в ваши разделы фида, но для этого у вас должно быть не менее 500 подписчиков, кроме того, нельзя использовать какую-либо другую рекламу, за исклчением рекламы AdSense, предоставляемой самим FeedBurner.

Решение. Есть возможность поместить любой вид рекламы в свой RSS фид. Например, можно использовать ссылку на бесплатную тему WordPress только для своих RSS подписчиков.

Для использования этого приема выполните следующие несложные действия:

1. Отредактируйте файл functions.php в своей теме. Если в вашей теме нет файла functions.php, создайте его.
2. Вставьте следующий код в файл functions.php.

<?php
function insertAds($content) {
$content = $content.'<hr /><a href="http://www.wp-info.ru">Все о WordPress</a><hr />';
return $content;
}
add_filter('the_excerpt_rss', 'insertAds');
add_filter('the_content_rss', 'insertAds');
?>

Сохраните файл. Теперь ваша реклама отображается в RSS фиде!

Объяснение. Я видел много случаев использования подобных приемов в Интернете, но они всегда требуют редактирования основных файлов WordPress, чтобы достичь такого же результата. Конечно же, редактирование основных файлов WordPress – это очень плохая идея, потому что тогда вам придется повторно редактировать эти файлы после каждого обновления движка. Вместо этого, в нашем приеме для добавления контента в RSS фид используется функция WordPress add_filter() без редактирования основных файлов движка.

4. Форматируйте свои изображения для читателей фида

Проблема. Вы потратили кучу времени, чтобы написать и отформатировать свой пост и вставить красивые скриншоты. На вашем блоге все смотрится прекрасно. Но, к сожалению, ваш пост выглядит не так красиво, когда он отображается в Google Reader или любом другом RSS ридере.

Решение. Это происходит потому, что фид-ридеры не отображают картинки в тексте:

Чтобы избежать этой проблемы, добавьте класс CSS для отображения картинки отдельным блоком. В движке WordPress используется встроенный класс «center».

<img src="http://yourblog.com/images/myimage.jpg" class="center"/>

5. Давайте своим читателям фид для каждого сообщения

Давайте своим читателям фид для каждого сообщения
Проблема. Если у поста очень много комментариев, то читателям тяжело проследить за всем обсуждением. Большинство пользователей WordPress не знают о том, что в этом движке есть встроенная функция предоставления RSS фида для комментариев к каждому посту.

Решение. Вообще-то, это совсем никакой и не прием: чтобы обеспечить RSS фид комментариев к определенному посту, просто вызовите функцию comment_rss_link():

<?php comments_rss_link('&raquo; Comments RSS Feed'); ?>

6. Исключайте рубрики из своего RSS фида

Проблема. Используете ли вы лишь одну из рубрик вашего блога, чтобы уведомлять своих читателей о новостях своего сайта, или же в вашем блоге есть рубрика, которая совсем не связана с остальным контентом? Если да, то не стоит включать такую рубрику в свой RSS фид.

Решение. Вот как можно избавиться от одной из рубрик в своем RSS фиде:

1. Сначала узнайте числовой идентификатор рубрики, которую хотите исключить.
2. После того, как вы узнали идентификатор рубрики, которую хотите исключить из своего RSS фида, отредактируйте файл functions.php в своей теме. Если такого файла нет, создайте его.
3. Вставьте в него следующий код:

function myFilter($query) {
if ($query->is_feed) {
$query->set('cat','-5'); //Не забудьте поменять ID категории
}
return $query;
}

add_filter('pre_get_posts','myFilter');

4. Сохраните файл, и все готово!

Объяснение. Этот прием работает так же, как и предыдущий: создайте специальную функцию, чтобы исключить из своего RSS фида определенную рубрику, а затем используйте мегаполезную функцию add_filter(), применив ее к основной функции WordPress pre_get_posts().

7. Импорт любого RSS фида в свой блог WordPress

Импорт любого RSS фида в свой блог WordPress
Проблема. У вас несколько блогов или вы управляете форумом? Если да, то, возможно, вы бы хотели отображать RSS фид в своем блоге WordPress.

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

1. Вставьте следующий код куда-нибудь в своей теме (я бы поместил его на боковую панель, в подвал, или еще лучше – в шаблон страницы):

<?php
include_once(ABSPATH.WPINC.'/rss.php');
wp_rss('http://feeds.feedburner.com/wpinfo', 3);
?>

2. Сохраните изменения, и все готово. Просто, не правда ли?

Объяснение. Во-первых, мы включили файл rss.php из ядра WordPress. Этот файл позволит нам использовать функцию wp_rss(), которая имеет два параметра: первый – это URL импортируемого RSS фида, а второй – количество отображаемых записей RSS.

8. Используйте RSS фиды по рубрикам

Используйте RSS фиды по рубрикам
Проблема. Во многих блогах рассматриваются разные темы: дизайн, программирование, советы блоггерам и т.д. Видели ли вы когда-нибудь блог, в котором вам понравилась только одна рубрика? Если да, то и своим читателям вы должны предлагать по одному фиду на каждую рубрику.

Решение. Допустим, вы хотели бы иметь возможность подписаться только на рубрику "Настройка WordPress".
Вот URL этой рубрики: http://www.wp-info.ru/category/nastrojka-wordpress/
Чтобы получать фид для этой рубрики, вам всего лишь необходимо добавить «/feed» в конце URL-адреса: http://www.wp-info.ru/category/nastrojka-wordpress/feed

Очень просто, не так ли? Но также очень полезно.

9. Указывайте RSS фиды по рубрикам

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

Решение.
1. Отредактируйте один из файлов своей темы, в котором хотите перечислить рубрики и их соответствующие фиды.
2. Вставьте следующий код:

<?php
wp_list_categories('feed_image=http://www.yourblog.com/image.gif&feed=XML Feed&optioncount=1&children=0');
?>

3. Сохраните файл. Теперь у вас будут отображаться все рубрики вместе с их RSS фидами!

Объяснение. В этом приеме используется старая добрая функция wp_list_categories(), имеющая два параметра. Первый параметр – это feed_image, позволяющий вам указать URL, который должен отображаться как значок фида. Второй параметр – это feed, используемый для указания формата фида.

10. Избавиться от RSS фидов напрочь

Избавиться от RSS фидов напрочь
Проблема. Допустим, вы используете WordPress в качестве движка для своего онлайн-портфолио или веб-сайта своей компании. В подобных случаях RSS фид не принесет какой-либо пользы, и многие хотели бы его удалить.

Решение. Я видел немало "приемов" в Интернете, когда люди говорят, что вам достаточно просто удалить include в основном файле wp-settings.php. Я считаю, что вы вообще не должны когда-либо изменять основные файлы. Вместо этого, можно использовать следующий прием. Просто вставьте указанный ниже код в файл functions.php своей темы:

function fb_disable_feed() {
wp_die( __('No feed available,please visit our <a href="'. get_bloginfo('url') .'">homepage</a>!') );
}

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);

Перевод статьи 10 Useful RSS-Tricks and Hacks For WordPress

Рубрика: Настройка WordPress | 17 июня 2009

Предыдущие записи из рубрики `Настройка WordPress`

27 комментариев

mcgrifin, 17.01.2011 в 21:05

За то, что дали ссылку на первоисточник отдельное человеческое спасибо. Другие же берут, присвоив себе чужой труд и идеи. Большая часть статей блоггера Jean-Baptiste Jung заслуживает внимания. RSS фиды по рубрикам - то, что нужно, если блог разноплановый. Мне пригодилось.

ОтветитьОтветить
Георгий, 03.03.2011 в 09:57

Интересные советы стоит воспользоваться. Как раз только начинаю осваивать рсс.

ОтветитьОтветить
Тома, 09.07.2011 в 12:43

Случайно нашла ваши советы. Второй день читаю без перерыва на кофе)))
Спасибо. Очень толково и интересно написано!

ОтветитьОтветить
Андрей, 03.06.2013 в 18:34

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

ОтветитьОтветить
Ната, 05.06.2013 в 13:26

Здравствуйте классно написано. Нужный материал для оформления своего фида. Но у меня никак не получается его найти. Мой фид сайт не видит дает 404 ошибку. Я до этого не могла его на фидбернер воткнуть давал тоже ошибку и не видел его. Я переустновила всеь вп по новой с новой Бд. все получилось. добавила 1 страницу и картинкии. до этого правда больше не проверяла есть или нет фид. а потом смотрю опять дает 404 ошибку. Поставила плагин fix rss feed он пишет исправил но ленты все равно нет. Подскажите где искать? Да и в плагине дает ошибку на линии 2. А я уже башку сломала где эта линия 2 в каком файле.

ОтветитьОтветить
BG, сегодня

Тема древняя и актуальная до сих пор. Только на предмет закрытия фида. Как бы начинается возврат к подписчикам на мыло. Поэтому возможно имеет смысл закрытие фида..

ОтветитьОтветить
Татьяна, 22.04.2015 в 17:39

Может быть Вам приходилось сталкиваться с таким: валидатор яндекса пишет по поводу фида –
Не найдено описание для элемента "rss". Возможно неверно указан корневой элемент.
Строка: 2 Позиция: 381
Подробнее
cvc-elt.1.a: Cannot find the declaration of element 'rss'.

В каком файле что не так? Что это значит – строка 2 Позиция: 374
Может подскажите

ОтветитьОтветить

Комментировать