"Программист — это профессиональный конвертер галлюцинаций заказчика в жесткую формальную систему"
Dec 252012
 

Довольно часто появляется необходимость – отдавать в RSS-ленту не все посты, например рекламу рассылать незачем – просто назначим ей отдельную категорию и исключим ее из RSS, ну и заодно с главной страницы – принцип одинаковый.

Можно, конечно, поставить специальные плагины, вроде Exclude categories, но работают они не всегда прозрачно, например на lifelongjourney.ru довольно много категорий и в какой-то момент плагин перестал отображать полный список. За что и был снесен. Взамен ему было добавлено с десяток строк кода в functions.php

Определяем ID нужных категорий
Для этого в админке в разделе “Рубрики” (http://yoursite.org/wp-admin/edit-tags.php?taxonomy=category) наводим мышку на нужную категорию – внизу окна браузера будет ссылка на категорию ID тут tag_ID=115. Также можно просто скопировать ссылку правой кнопкой мыши и уже в блокноте вытащить этот ID. В данном случае это 115.

Теперь в файле functions.php:

//Исключение категорий из RSS
//Обратите внимание на знак минус перед категорией!!!!
function myFeedExcluder($query) {
 if ($query->is_feed) {
   $query->set('cat','-115');
 }
return $query;
}
add_filter('pre_get_posts','myFeedExcluder');//Указание WordPress использовать нашу функцию при выводе RSS
//Исключение категории с главной страницы
//Как видно из примера – если Вам надо удалить несколько категорий, просто поставьте их через запятую
function myMainPageExcluder($query) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '-115,-183' );
    }
}
add_action( 'pre_get_posts', 'myMainPageExcluder' );

 

В принципе эти две функции можно объединить в одну, но это кому как нравиться.

Поделиться в соц.сетях

 Posted by at 3:50 pm

  One Response to “Как отфильтровать категории с главной страницы и RSS в WordPress”

  1. I truly appreciate this post. I have been looking everywhere for this! Thank goodness I found it on Bing. You have made my day! Thank you again!

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)