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

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Я уже писал, как убрать посты определенных категорий с главной страницы. Сделать это не сложно, и иногда это будет лучшим решением для сложной структуры блога. Однако код, приведенный в посте, ничего не делает с 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');

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

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. Практика показала, что безотказно работает способ:

    /feed?cat=-24,-48,-96
    Ответить
    1. SwaEgo

      А фильтр в functions.php работает?

      Ответить