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 комментариев

wp-admin, 17.06.2009 в 17:45

Коллега, вы задаете нешуточный темп для блоггинга! Подстегивает ускорить подготовку качественных материалов 😉

Deimos, 17.06.2009 в 19:42

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

IgorOsa, 17.06.2009 в 19:58

Классные фишки, буду пробовать!

Alex, 18.06.2009 в 09:19

Блин давно искал как сделать подписку на рубрики а не на все сообщения, спасибо огромное

Andrey K., 18.06.2009 в 09:00

Просто офигительно!))))
Спасибо огромное за материал! Редактировать тему, и правда, намного удобнее, безопаснее и оправданнее, нежели лезть в код самого вордпресса...

jaded_77, 18.06.2009 в 11:19

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

Deimos, 18.06.2009 в 09:29

Alex у Вас сайт не работает, уже третий день пытаюсь зайти...

Avdenago, 22.06.2009 в 11:08

Спасибо. Действительно отличный список. Узнал и новые идеи и новые решения.

А можно как-то подробнее почитать про применение add_filter и add_action? Кодекс уже читанул, но на примере бы...

Волнует, кстати, отдача в rss содержимого дополнительных полей.

Раньше правил файлы ядра, но как замечено такой подоход не удобен. А вот сделать через дополнительную функцию в function.php было бы здорово.

Алексей, 25.06.2009 в 12:38

Спасибо, интересные примерчики. Многое делал через специальные плагины, но считаю что лучше самому править.

Tolsty, 04.07.2009 в 23:57

Ну до чего я не притязателен к настройкам и фичам своего блога, но сразу положил в закладки и решил использовать одну фишку !

Денис, 05.07.2009 в 12:37

Отличная статья! Автору респект!!!
Могу ли я разместить её в своём блоге?

Deimos, 05.07.2009 в 16:46

Конечно, только обратную ссылку не забудьте поставить 😉

Cini4kin, 29.07.2009 в 06:53

Доброго времени суток. Не могли бы Вы подробней объяснить, как заставить отображаться картинки в feedburner? Из пункта 4 не совсем понял...
Заранее спасибо!

Yuriy, 25.09.2009 в 15:29

Добрый день! Спасибо большое за интересный пост! Скажите, а можно настроить отображение разных rss в разные рубрики моего блога? Спасибо!

legre, 28.09.2009 в 09:28

Добрый день! Присоединяюсь к предыдущему вопросу. В п.9 Вашего поста описан способ настройки RSS для каждой рубрики. Пробовал. Не работает. Может быть Вы более подробно разъясните, как это сделать? Пожалуйста.

Kama, 03.11.2009 в 00:32

6. Исключайте рубрики из своего RSS фида
В гробу я видел этот пункт. Писать надо под какую версию проверялся. Все вроде работает, а в админке глюки. Не сразу заметил, намучился страшно, пока понял что из-за этого. У меня ВП 2,8,4

coyc, 02.12.2009 в 02:23

Попробовал сделать редирект, чета не пашет 🙁
Вот что в .htaccess:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# temp redirect wordpress content feeds to feedburner

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/that_if [R=302,NC,L]

# END WordPress

rewrite_module включен
Сопсна вот http://www.thatif.ru/feed/

Есть идеи? ;(

Deimos, 02.12.2009 в 11:00

coyc, идей нет, т.к. я не силен в регулярках =( Сам пользуюсь плагином FeedBurner FeedSmith, попробуй его поставь.

coyc, 02.12.2009 в 11:53

*DRINK* спасибо, помогло 🙂 FF тупит малясь

xoxol, 15.01.2010 в 16:13

на рабочем блоге пытаюсь выполнить № 9,
но сделать его в виджете. не работает 🙁

но функции в виджетах, кажется работают ведь!? или нет?

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

Новые комментарии