Я уже писал, как убрать посты определенных категорий с главной страницы. Сделать это не сложно, и иногда это будет лучшим решением для сложной структуры блога. Однако код, приведенный в посте, ничего не делает с RSS – посты категорий, которые нужно скрыть, появляются в фиде. Впрочем, и эта проблема решаема, при чем без плагинов и двумя способами.
Первым способом является создание ссылки на RSS фид, в которой будут указаны исключаемые категории. Стандартная ссылка на RSS фид выглядит так:
Вы можете вставить эту ссылку в тему, чтобы люди могли подписаться на RSS. Прямо в ссылке можно указать категорию, посты которой нужно исключить:
https://n-wp.ru/?cat=-48
48 – это ID категории, посты из которой нужно исключить. Если нужно скрыть посты из нескольких категорий, то их можно перечислить через знак &:
https://n-wp.ru/?cat=-96
Однако если вы ретранслируете RSS в FeedBurner, то из-за употребления амперсантов могут возникнуть ошибки. Чтобы избежать их, можно перечислять ID категорий без этих символов:
https://n-wp.ru/?cat=-24%2C-48%2C-96
Способ хороший, но не каждый захочет светить ID скрываемых категорий. Поэтому есть второй способ – создание функции-фильтра, исключающего посты некоторых категорий из RSS фида. Откройте файл functions.php, и вставьте в него такой код:
function my_cat_exclude($query) { if ($query->is_feed) { $query->set('cat','-24,-48,-96'); } return $query; } add_filter('pre_get_posts','my_cat_exclude');
Второй способ более универсальный.
Практика показала, что безотказно работает способ:
А фильтр в functions.php работает?