Как исключить посты определенных категорий из RSS

Я уже писал, как убрать посты определенных категорий с главной страницы. Сделать это не сложно, и иногда это будет лучшим решением для сложной структуры блога. Однако код, приведенный в посте, ничего не делает с RSS – посты категорий, которые нужно скрыть, появляются в фиде. Впрочем, и эта проблема решаема, при чем без плагинов и двумя способами.

Первым способом является создание ссылки на RSS фид, в которой будут указаны исключаемые категории. Стандартная ссылка на RSS фид выглядит так:

https://n-wp.ru/feed

Вы можете вставить эту ссылку в тему, чтобы люди могли подписаться на RSS. Прямо в ссылке можно указать категорию, посты которой нужно исключить:

https://n-wp.ru/feed?cat=-48

48 – это ID категории, посты из которой нужно исключить. Если нужно скрыть посты из нескольких категорий, то их можно перечислить через знак &:

https://n-wp.ru/feed?cat=-24&cat=-48&cat=-96

Однако если вы ретранслируете RSS в FeedBurner, то из-за употребления амперсантов могут возникнуть ошибки. Чтобы избежать их, можно перечислять ID категорий без этих символов:

https://n-wp.ru/feed?cat=-24,-48,-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');

Второй способ более универсальный.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

2 Комментарии

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*