10 полезных фишек для RSS в WordPress

Добрый вечер, дорогие читатели. Сегодняшней публикацией продолжаю пополнять копилку знаний о WordPress на моем блоге. Не одна из предыдущих публикаций на эту тему не осталась без внимания, а значит у вас есть интерес в этой области. И поэтому я не могу не удовлетворить его! Приятного вам изучения. Дальше очень много нужной информации.

RSS — это одна из тех технологий которая очень проста и в то же время просто незаменима. Сегодня RSS это де факто общепринятый стандарт для блогов, и используется повсеместно. Ну а так как большинство блогов в сети построено на WordPress, мы и рассмотрим все примеры применимо к данному движку. Некоторые фишки давно известны, но я уверен, что этот список поможет вам использовать свой RSS в WordPress намного эффективнее, и все это без использования плагинов!

Как и в других моих постах про WordPress хочется построить описание в виде «проблема-решение-описание». Это самый оптимальный вариант описания таких вещей. Потому что вы будете знать, не только как это делается, но и почему делается именно так, а при желании и под себя перестроить.

Пожалуй, будем приступать.

1. Настраиваем время появление поста в RSS ленте, вывод RSS с задержкой

Вывод RSS с задержкой

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

Решаем проблему: Чтобы решить эту проблему, нам необходимо вставить следующий код в файл function.php нашей темы:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function publish_later_on_feed($where) {
	global $wpdb;

	if ( is_feed() ) {
		// получаем текущее время
		$now = gmdate('Y-m-d H:i:s');

		// задержка
		$wait = '5'; // integer

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

Дополнение: В данном коде выставлена задержка между публикацией поста и обновлением RSS-потока в 5 минут. Для этого определена переменная $wait. Вы можете изменить значение по своему усмотрению.

2. Переадресация RSS фида WordPress на фид из FeedBurner

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

Проблема №2: Если вы часто меняете темы оформления блога, вам необходимо будет постоянно заботиться о том, чтобы заменить стандартную функцию bloginfo (’rss2_url’) на адрес вашего FeedBurner канала.

Решаем проблему: Решение обоих проблем совсем не сложное, мы будем использовать редирект на сервере.
Добавляем следующий код в файл .htaccess в корневой директории и сохраняем

# 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/alaev/TxUH [R=302,NC,L]
</IfModule>

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

3. Вставляем рекламу, картинки (или еще что-нибудь) в RSS-канал

RSS лента с картинками или рекламой

Проблема: Монетизация RSS-ленты уже стала обыденной вещью, особенно за рубежом, и многие блогеры используют эту тактику для увеличения своих доходов. FeedBurner может вставить рекламу AdSense в ленту, но есть некоторые ограничения по подписчикам, чтобы иметь такую возможность. Да и вставить что-то другое кроме AdSense не получится, а это неудобно.

Решаем проблему: Всегда есть возможность вставить что угодно и куда угодно =) Вот, например, вы можете вставить ссылку на что-нибудь «вкусненькое» только для своих подписчиков.
Для этого требуется добавить следующую функцию в файл вашей темы functions.php

<?php
function insertAds($content) {
    $content = $content.'<hr /><a href="http://alaev.info/fotofolio">А вы уже прокомментировали мои фотографии?</a><hr />';
    return $content;
}
add_filter('the_excerpt_rss', 'insertAds');
add_filter('the_content_rss', 'insertAds');
?>

Дополнение: Существует много различных способов добиться нужного результата, но они требуют вмешательства в код. Этот же способ использует только функцию add_filter () для вставки нужного элемента без необходимости править код движка.

4. Форматируем правильно изображения для RSS-ленты

Специально походил сейчас по блогам и таки нашел у нескольких человек эту проблему. Смотрите, проблемный участок я пометил красным.

Некрасивое отображение изображений в RSS

А ведь гораздо красивее было бы сделать так

Красивое форматирование изображений в RSS

Или так

Правильное отображение картинок в RSS

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

Решаем проблему: Чтобы разобраться с этой проблемой добавляем к изображению параметр style.

<img src="//alaev.info/wp-content/uploads/2010/04/wp10rss_4_3-300x98.jpg" alt="wp10rss_4_3" title="wp10rss_4_3" width="300" height="98" class="alignleft" style="padding:0 10px 5px 0;" />

Дополнительно: padding:0 10px 5px 0; каждый из четырех параметров означает отступ начиная с верхнего заканчивая левым краем, по часовой стрелке. Следовательно в примере будет отступ для картинки 10px справа и 5px снизу.

5. Предоставьте вашим читателям RSS подписку на комментарии

RSS лента комментариев к посту

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

Решаем проблему: Решение тут совсем простое, никаких хаков не потребуется. Достаточно добавить функцию comment_rss_link () в вашу тему. Смотрим следующий код:

<?php comments_rss_link('&raquo; RSS-лента комментариев к посту'); ?>

6. Исключаем определенные категории из RSS-ленты

Проблема: Есть ли у вас на блоге категория или даже несколько категорий, которые вы бы не хотели включать в RSS? Может быть, эта категория с рекламными обзорами или вашими личными новостями, которая не интересна ценителям основного контента? Так что идея НЕ включать ее в общую ленту выглядит отличной!

Решаем проблему: Ниже описан алгоритм действий, который поможет исключить произвольную категорию из ленты:

  1. Вычисляем ID ненужной категории. Его вы можете узнать в настройках самой категории
  2. Теперь идет в редактирование файла вашей темы functions.php
  3. Вставляем в файл следующий код и сохраняем
function myFilter($query) {
    if ($query->is_feed) {
        $query->set('cat','-5'); //Не забудьте вставить свой ID ^_^
    }
return $query;
}

add_filter('pre_get_posts','myFilter');

Дополнительно: Не забудьте в коде заменить значение на ваш ID. Тут так же используется полезная функция add_filter () применимо к pre_get_posts ().

7. Выводим любую RSS-ленту на WordPress блоге

Проблема: Может быть у вас несколько блогов? Или даже у вас есть тематический форум? Тогда вам наверняка захочется сделать вывод последних новостей на своем блоге.

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

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

Дополнительно: Первое что мы делаем, это подгружаем стандартный rss.php. Этот файл нам позволяет использовать функцию wp_rss (), которая имеет два параметра: адрес rss-потока и количество выводимых элементов.

8. Используем отдельные RSS-ленты для разных категорий

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

Решаем проблему: Представьте, что вы хотите подписаться только на категорию WordPress, которая имеет следующий адрес:

http://alaev.info/blog/category/wordpress

Чтобы получить адрес RSS-ленты для данной категории необходимо добавить только /feed в конце url’а, вот так:

http://alaev.info/blog/category/wordpress/feed

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

9. Выводим список RSS-подписок по категориям

RSS подписка на категории

Проблема: Если вам понравился предыдущий пункт, вам наверняка приглянется и этот. Сейчас мы займемся выводом названий категорий для подписки и картинки RSS.

Решаем проблему: Открываем необходимый файл вашей темы оформления, находим подходящее место и вставляем следующий код:

<?php wp_list_categories('feed_image=http://alaev.info/rss_img.gif&feed=XML Feed&optioncount=1&children=0'); ?>

Дополнительно: Этот метод использует старую добрую функцию wp_list_categories (). Она содержит два параметра: feed_image – путь к изображению отображения фида и, собственно, параметр определяющий формат самого фида.

10. Избавляемся от RSS … совсем 😉

Избавляемся от RSS

Сперва вам необходимо будет ответить на вопрос, а для чего вы используете CMS WordPress? Для своего портфолио или это сайт вашей фирмы? Тогда может быть вам и не нужна RSS-лента на сайте и надо ее удалить?

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

function fb_disable_feed() {
	wp_die( __('Фид недоступен, пожалуйста, перейдите на нашу <a href="'. get_bloginfo('url') .'">главную страницу</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);

Источник: alaev.info/blog/post/865

Запись опубликована в рубрике WordPress. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91