Как улучшить RSS без плагинов

Часто бывает нужно усовершенствовать RSS фид – добавить в него страницы, исключить определенные рубрики, добавить миниатюры к краткому варианту, исключить записи с определенным тегом, добавить подпись. Конечно же для этого можно воспользоваться плагинами: добавить подпись с помощью Ozh’ Better Feed, исключить посты определенных категорий с помощью плагина Advanced Category Excluder. Однако если вам нужны не очень сложные условия для переделки RSS, то можно это сделать и не прибегая к помощи плагинов. Давайте воспользуемся несколькими приемами с файлом functions.php и добавим все эти возможности.

Как добавить подпись в RSS

Откройте файл functions.php и вставьте в него такой код:

function feedFilter($query) {
	if ($query->is_feed) {
		add_filter('the_content','feedContentFilter');
	}
	return $query;
}
add_filter('pre_get_posts','feedFilter');

function feedContentFilter($content) {
	$content .= '

Блог '. get_bloginfo('name') .'

'; return $content; }

Этот код выводит подпись “Блог {название блога}”, причем название блога является ссылкой. Такая простая подпись может обезопасить вас от воровства содержимого RSS – каждая новость в нем будет содержать ссылку на ваш блог.

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

Иногда в блогах существуют такие рубрики, постами из которых не хотелось бы делиться (что-нибудь личное, платная информация). Зачем же тогда посылать все подряд в RSS – давайте сделаем список исключений. Откройте файл functions.php и вставьте в него такой код:

function feedFilter($query) {
	if ($query->is_feed) {
		$query->set('cat', '-4');
	}

	return $query;
}
add_filter('pre_get_posts','feedFilter');

Обратите внимание на set(‘cat’, ‘4’) – это указатель: категория с ID=4 исключается из фида, посты в этой категории никогда не появятся в RSS.
Можно поступить с точностью до наоборот – отправлять в RSS только посты из определенной категории. В этом случае нужно просто убрать знак минуса перед ID.

function feedFilter($query) {
	if ($query->is_feed) {
		$query->set('cat', '4');
	}

	return $query;
}
add_filter('pre_get_posts','feedFilter');

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

Чтобы исключить посты с определенными тегами, нужно в файл functions.php добавить такой код:

function feedFilter($query) {
	if ($query->is_feed) {
		$tags = array('4');
		$query->set('tag__not_in', $tags);
	}

	return $query;
}
add_filter('pre_get_posts','feedFilter');

Обратите внимание на array(‘4’) – это условие: посты с тегом, у которого ID=4, никогда не появятся в RSS. Если нужно указать несколько тегов, то это условие можно модифицировать:

function feedFilter($query) {
	if ($query->is_feed) {
		$tags = array('2', '4', '6');
		$query->set('tag__not_in', $tags);
	}

	return $query;
}
add_filter('pre_get_posts','feedFilter');

В этом коде исключаются посты с тегами, ID которых равны 2,4 и 6.

Как добавить в RSS страницы

В некоторых блогах появление новых страниц – такое важное событие, как и публикация новых постов. Однако по-умолчанию RSS фид глух к страницам – о них там ничего не напоминает. Это можно исправить, добавив в файл functions.php такой код:

function feedFilter($query) {
	if ($query->is_feed) {
		$query->set('post_type','any');
		}
	return $query;
}
add_filter('pre_get_posts','feedFilter');

Как добавить миниатюры в RSS

Если вы используете краткий вид RSS в виде небольшого текстового анонса, но вам все же нужно показывать миниатюру в каждой новости, то воспользуйтесь таким кодом, вставленным в functions.php:

function feedFilter($query) {
	if ($query->is_feed) {
		add_filter('the_content', 'feedContentFilter');
		}
	return $query;
}
add_filter('pre_get_posts','feedFilter');
 
function feedContentFilter($content) {
	$thumbId = get_post_thumbnail_id();
 
	if($thumbId) {
		$img = wp_get_attachment_image_src($thumbId);
		$image = '';
		echo $image;
	}
 
	return $content;
}

Чтобы этот код работал, нужна поддержка миниатюр.
Несколько сопутствующих ссылок:
Основы работы с WordPress | Работа с изображениями – размер миниатюр
Как показать ID записей в блоге | WP Show IDs

Если вы хотите избавиться от излишнего количества плагинов, но не потерять функциональность блога, то посмотрите, как сделать “хлебные крошки” без плагинов и как сделать постраничную навигацию без плагинов.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

3 Комментарии

  1. Спасибо, полезные хаки.
    Только вот с одной стороны обход плагинов – классная вещь, а с другой – засадная: приходится составлять список всех хаков и изменений файлов, чтобы потом при апдейте все это повторять.
    Лучше уж писать под каждый хак свой микроплагинчик, в котором не будет ничего лишнего. Зато можно апдейтиться сколько угодно без геморов.

    • А зачем микро-плагинчик? Можно и один макси-плагин со всеми хаками написать.
      А можно хаки все собирать в один файл, а потом просто все вместе вставлять в functions.php – процедура не сложнее, чем установка и активация плагинов.

  2. А ещё лучше сделать свой плагин, который при загрузке добавлял коды в него прописанные в файл functions.php. И обновляйтесь сколько хотите, никакие обновления этот ваш плагин не затронут, и не нужно ничего запоминать и вставлять после каждого обновления

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*