Февраль
21
2011

Управление RSS фидом в WordPress

Управление RSS фидом в WordPress

Сейчас многие блогеры предлагают своим посетителям узнавать об обновлениях на сайте через твиттер, но он проигрывает в удобстве чтению через RSS, в частности через Google Reader. Стандартный фид в WordPress сделан неплохо, но для продвинутого пользователя его мало. К счастью несколько строк кода могут сделать много полезного, исключив необходимость использовать ресурсоемких плагинов.

Все изменения вносятся в файл functions.php, находящийся в папке темы. Это важно, так как functions.php в wp-includes заменяется при обновлении.

Перед внесением изменений сделайте BackUp.

Создание функции фильтра

В WordPress существуют так называемые фильтры, которые позволяют вызвать функцию при определенных условиях. Сначала нужно определить свою функцию, а в конце добавить фильтр, который вызывает ее при каждом запросе.

function myFeed($query) {
if ($query->is_feed) {
тело
}
return $query;
}
add_filter('pre_get_posts','myFeed');

В этом примере используется функция myFeed, которая проверяет тип запроса, если это фид, то вносит изменения, описанные в теле и возвращает запрос на выполнение. Все дальнейшие примеры кода вставляются внутрь функции.

Исключить определенные записи

Это наверное самое популярное действие, которое хотят совершить многие блогеры, ведь не для кого не секрет, что иногда публикуются проплаченные записи. Например в Rotapost это называется пресс-релиз, и по правилам может не попадать в фид.

Можно исключить записи из определенной категории, или отмеченные определенной меткой. Для исключения тега вписываем в тело функции ледующий код:

$tags = array('280');
$query->set('tag__not_in', $tags);

где 280 — id тега, который необходимо исключить. У меня это Призрачный тег. Можно добавить несколько меток, перечисляя их через запятую.

Чтобы исключить категорию вписываем в тело код:

$query->set('cat', '-1');

В этом примере из фида исключается категория №1. Обязательно нужно ставить знак минус.

Добавление страниц в фид

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

$query->set('post_type','any');

Добавление своего текста в запись

Часто возникает желание вставить в конце записи определенный текст. Например напоминание об авторских правах, ссылки на популярные записи или рекламный блок. Для этого в тело нашей функции вставляем код:

add_filter('the_content','myFeedContent');

Это добавляет в фид вызов функции myFeedContent, которую необходимо объявить:

function myFeedContent($content){
$content .= '<p>При копировании материалов ссылайтесь на источник
<a href="http://tigors.net">tigor.org.ua</a></p>';
return $content;
}

Писать можно любой текст, включая html-теги, но не забываем соблюдать стандарты RSS.

Неправильная раскладка: eghfdktybt кыы abljv d цщквзкуыы

Понравилась статья? Посоветуйте друзьям!

HowTO PHP SEO Tips&Tricks Tutorial WordPress


Понравилась статья? Подпишись на рассылку по E-Mail или в RSS.
  • А чем плохо использование сервиса Feedburner? ИМХО быстро, просто и самому ничего делать не надо :-)