Часто бывает нужно усовершенствовать RSS фид — добавить в него страницы, исключить определенные рубрики, добавить миниатюры к краткому варианту, исключить записи с определенным тегом, добавить подпись. Конечно же для этого можно воспользоваться плагинами: добавить подпись с помощью Ozh’ Better Feed, исключить посты определенных категорий с помощью плагина Advanced Category Excluder. Однако если вам нужны не очень сложные условия для переделки RSS, то можно это сделать и не прибегая к помощи плагинов. Давайте воспользуемся несколькими приемами с файлом functions.php и добавим все эти возможности.
Как добавить подпись в RSS
Откройте файл functions.php и вставьте в него такой код:
function feedFilter( $query ) { |
add_filter( 'the_content' , 'feedContentFilter' ); |
add_filter( 'pre_get_posts' , 'feedFilter' ); |
function feedContentFilter( $content ) { |
$content .= '<p>Блог <a href="' .%20get_bloginfo( 'url' )%20. '">' . get_bloginfo( 'name' ) . '</a></p>' ; |
Этот код выводит подпись «Блог {название блога}», причем название блога является ссылкой. Такая простая подпись может обезопасить вас от воровства содержимого RSS — каждая новость в нем будет содержать ссылку на ваш блог.
Как исключить определенные рубрики из RSS
Иногда в блогах существуют такие рубрики, постами из которых не хотелось бы делиться (что-нибудь личное, платная информация). Зачем же тогда посылать все подряд в RSS — давайте сделаем список исключений. Откройте файл functions.php и вставьте в него такой код:
ffunction feedFilter( $query ) { |
$query ->set( 'cat' , '-4' ); |
add_filter( 'pre_get_posts' , 'feedFilter' ); |
Обратите внимание на set(‘cat’, ‘4’) — это указатель: категория с ID=4 исключается из фида, посты в этой категории никогда не появятся в RSS.
Можно поступить с точностью до наоборот — отправлять в RSS только посты из определенной категории. В этом случае нужно просто убрать знак минуса перед ID.
ffunction feedFilter( $query ) { |
add_filter( 'pre_get_posts' , 'feedFilter' ); |
Как исключить определенные теги из RSS
Чтобы исключить посты с определенными тегами, нужно в файл functions.php добавить такой код:
function feedFilter( $query ) { |
$query ->set( 'tag__not_in' , $tags ); |
add_filter( 'pre_get_posts' , 'feedFilter' ); |
Обратите внимание на array(‘4’) — это условие: посты с тегом, у которого ID=4, никогда не появятся в RSS. Если нужно указать несколько тегов, то это условие можно модифицировать:
function feedFilter( $query ) { |
$tags = array ( '2' , '4' , '6' ); |
$query ->set( 'tag__not_in' , $tags ); |
add_filter( 'pre_get_posts' , 'feedFilter' ); |
В этом коде исключаются посты с тегами, ID которых равны 2,4 и 6.
Как добавить в RSS страницы
В некоторых блогах появление новых страниц — такое важное событие, как и публикация новых постов. Однако по-умолчанию RSS фид глух к страницам — о них там ничего не напоминает. Это можно исправить, добавив в файл functions.php такой код:
function feedFilter( $query ) { |
$query ->set( 'post_type' , 'any' ); |
add_filter( 'pre_get_posts' , 'feedFilter' ); |
Как добавить миниатюры в RSS
Если вы используете краткий вид RSS в виде небольшого текстового анонса, но вам все же нужно показывать миниатюру в каждой новости, то воспользуйтесь таким кодом, вставленным в functions.php:
function feedFilter( $query ) { |
add_filter( 'the_content' , 'feedContentFilter' ); |
add_filter( 'pre_get_posts' , 'feedFilter' ); |
function feedContentFilter( $content ) { |
$thumbId = get_post_thumbnail_id(); |
$img = wp_get_attachment_image_src( $thumbId ); |
$image = '<img align="left" src="' .%20 $img [0]%20. '" alt="" width="' . $img [1] . '" height="' . $img [2] . '" />' ; |
Чтобы этот код работал, нужна поддержка миниатюр.