Довольно часто появляется необходимость – отдавать в 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' );
В принципе эти две функции можно объединить в одну, но это кому как нравиться.
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!