RSS – это одна из чрезвычайно простых и, в то же время, чрезвычайно мощных технологий. На данный момент RSS фактически стал стандартом для синдикации блогов (одновременной публикации контента на нескольких веб-узлах) и широко используется в личных и корпоративных целях - например, в блогах. Принимая во внимание то, что многие из таких блогов работают на движке WordPress, в этом посте мы постараемся охватить некоторые (как нам кажется) малоизвестные, но полезные RSS приемы, которые помогут вам использовать этот сервис более эффективно и без использования ненужных и корявых плагинов WordPress.
Рассмотрим 10 полезных и малоизвестных RSS приемов для WordPress. В каждом пункте статьи описывается проблема и предлагается ее решение. При этом каждое решение подробно описано, чтобы вы могли не просто решить свои проблемы, связанные с RSS, но и при этом понимали, что вы делаете. Таким образом, вы сами будете модифицировать свою тему WordPress, а не наполнять ее непонятными исходными кодами.
Проблема. Бывало ли у вас такое, что вы опубликовали статью и сразу же заметили ошибку? Конечно же, вы можете исправить ошибку, но есть другая проблема: статья уже опубликована в вашем 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.
Проблема. Блоггер-новичок обычно начинает пользоваться сервисом 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 фид.
Проблема. Сейчас все больше и больше людей зарабатывают на 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() без редактирования основных файлов движка.
Проблема. Вы потратили кучу времени, чтобы написать и отформатировать свой пост и вставить красивые скриншоты. На вашем блоге все смотрится прекрасно. Но, к сожалению, ваш пост выглядит не так красиво, когда он отображается в Google Reader или любом другом RSS ридере.
Решение. Это происходит потому, что фид-ридеры не отображают картинки в тексте:
Чтобы избежать этой проблемы, добавьте класс CSS для отображения картинки отдельным блоком. В движке WordPress используется встроенный класс «center».
<img src="http://yourblog.com/images/myimage.jpg" class="center"/>
Проблема. Если у поста очень много комментариев, то читателям тяжело проследить за всем обсуждением. Большинство пользователей WordPress не знают о том, что в этом движке есть встроенная функция предоставления RSS фида для комментариев к каждому посту.
Решение. Вообще-то, это совсем никакой и не прием: чтобы обеспечить RSS фид комментариев к определенному посту, просто вызовите функцию comment_rss_link():
<?php comments_rss_link('» Comments RSS Feed'); ?>
Проблема. Используете ли вы лишь одну из рубрик вашего блога, чтобы уведомлять своих читателей о новостях своего сайта, или же в вашем блоге есть рубрика, которая совсем не связана с остальным контентом? Если да, то не стоит включать такую рубрику в свой 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().
Проблема. У вас несколько блогов или вы управляете форумом? Если да, то, возможно, вы бы хотели отображать 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.
Проблема. Во многих блогах рассматриваются разные темы: дизайн, программирование, советы блоггерам и т.д. Видели ли вы когда-нибудь блог, в котором вам понравилась только одна рубрика? Если да, то и своим читателям вы должны предлагать по одному фиду на каждую рубрику.
Решение. Допустим, вы хотели бы иметь возможность подписаться только на рубрику "Настройка WordPress".
Вот URL этой рубрики: http://www.wp-info.ru/category/nastrojka-wordpress/
Чтобы получать фид для этой рубрики, вам всего лишь необходимо добавить «/feed» в конце URL-адреса: http://www.wp-info.ru/category/nastrojka-wordpress/feed
Очень просто, не так ли? Но также очень полезно.
Проблема. Если вам понравился предыдущий прием, то вы, скорее всего, также хотели бы, чтобы все названия фидов рубрик отображались в виде списка на вашем сайте.
Решение.
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, используемый для указания формата фида.
Проблема. Допустим, вы используете 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
Коллега, вы задаете нешуточный темп для блоггинга! Подстегивает ускорить подготовку качественных материалов 😉
Классные фишки, буду пробовать!
Блин давно искал как сделать подписку на рубрики а не на все сообщения, спасибо огромное
Просто офигительно!))))
Спасибо огромное за материал! Редактировать тему, и правда, намного удобнее, безопаснее и оправданнее, нежели лезть в код самого вордпресса...
вобще не запариваюсь с этим rss не знаю даже добавляет он пузомерок или нет, для чтения удобно и не более
Спасибо. Действительно отличный список. Узнал и новые идеи и новые решения.
А можно как-то подробнее почитать про применение add_filter и add_action? Кодекс уже читанул, но на примере бы...
Волнует, кстати, отдача в rss содержимого дополнительных полей.
Раньше правил файлы ядра, но как замечено такой подоход не удобен. А вот сделать через дополнительную функцию в function.php было бы здорово.
Спасибо, интересные примерчики. Многое делал через специальные плагины, но считаю что лучше самому править.
Ну до чего я не притязателен к настройкам и фичам своего блога, но сразу положил в закладки и решил использовать одну фишку !
Отличная статья! Автору респект!!!
Могу ли я разместить её в своём блоге?
Доброго времени суток. Не могли бы Вы подробней объяснить, как заставить отображаться картинки в feedburner? Из пункта 4 не совсем понял...
Заранее спасибо!
Добрый день! Спасибо большое за интересный пост! Скажите, а можно настроить отображение разных rss в разные рубрики моего блога? Спасибо!
Добрый день! Присоединяюсь к предыдущему вопросу. В п.9 Вашего поста описан способ настройки RSS для каждой рубрики. Пробовал. Не работает. Может быть Вы более подробно разъясните, как это сделать? Пожалуйста.
6. Исключайте рубрики из своего RSS фида
В гробу я видел этот пункт. Писать надо под какую версию проверялся. Все вроде работает, а в админке глюки. Не сразу заметил, намучился страшно, пока понял что из-за этого. У меня ВП 2,8,4
Попробовал сделать редирект, чета не пашет 🙁
Вот что в .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/
Есть идеи? ;(
*DRINK* спасибо, помогло 🙂 FF тупит малясь
на рабочем блоге пытаюсь выполнить № 9,
но сделать его в виджете. не работает 🙁
но функции в виджетах, кажется работают ведь!? или нет?
Просто мне интересно самому писать, здесь часть материалов не только для читателей, но и для себя, я работаю с WordPress каждый день)