Исключение рубрик с главной страницы

Способов исключения показа записей определенной рубрики на главной странице блога несколько. Больше всего мне нравится метод с добавлением своего фильтра в файл functions.php, так как это избавляет от необходимости править другие файлы шаблона, а в частности не надо возиться с переделкой цикла вывода записей в index.php через query_posts. Рассмотрим самый простой пример: удаляем записи рубрики с ID=5 с главной страницы, для этого добавим в файл functions.php код:

function removeFromHome($query) {
if ($query->is_home) 
	{$query->set('cat','-5');}
return $query; }
add_filter('pre_get_posts','removeFromHome');

Теперь на главной странице не будут присутствовать записи из рубрики с ID 5. Хочу напомнить, что в понимании WordPress главной страницей считается также и любая другая страница, образованная постраничной навигацией. То есть посты из рубрики 5 вы не увидите и на /page/2, /page/3 и др. Если вас это не устраивает, то вы должны слегка модифицировать приведенный код.

function removeFromHome($query) {
if ($query->is_home && !(is_paged())) 
	{$query->set('cat','-5');}
return $query; }
add_filter('pre_get_posts','removeFromHome');

Теперь и на странице /page/2 и на следующих страницах записи рубрики с ID 5 будут показываться. Аналогичным способом можно исключить показ записей рубрики не только с главной страницы. Например, для исключения записей рубрики из страницы результатов поиска вам надо поменять is_home на is_search. Для исключения нескольких рубрик перечислите их ID через запятую, то есть '-5,-6,-7' и т.д.

Что если нам не надо исключать записи рубрик из блога, но надо исключить их из RSS ленты? Используем тот же самый код:

function removeFromFeed($query) {
if ($query->is_feed)
	{$query->set('cat','-5');}
return $query; }
add_filter('pre_get_posts','removeFromFeed');

И вашей ленте не будут присутствовать записи из указанной рубрики. Если надо совместить удаление записей рубрики и из главной страницы и из фида используйте что-то типа:

function removeCat($query) {
if ($query->is_feed || ($query->is_home && !(is_paged()))) 
	{$query->set('cat','-5,-34');}
return $query; }
add_filter('pre_get_posts','removeCat');

Данный код удалит записи рубрик с ID 5 и 34 и из RSS ленты и из главной страницы блога, но будет их показывать, если главная страница сменилась на /page/2 и следующие, образованные постраничной навигацией.

Понравился пост? Подпишись на обновления по Обновления блога по RSSRSS или Обновления блога на TwitterTwitter !

Парфюмерия

интернет магазин парфюмерия по низким ценам

www.aromas.ru

Likes Kaufen

В Нидерландах процесс покупки Facebook лайков называется Likes Kaufen

lorghagar.angelfire.com

Комментарии (всего 11 комментариев)

Написать комментарий

(обязательно)

(обязательно, не публикуется)

Для вставки кода используйте кнопку "Код", по умолчанию используется синтаксис подсветки языка "php", вы можете поменять его на любой другой поддерживаемый GeSHi язык, например "javascript", "css", "html4strict", "sql" и тд. Используйте предпросмотр!
 


Подписаться на уведомления без комментирования.