Довольно часто появляется необходимость – отдавать в 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!