Как исключить рубрику из RSS-ленты своего блога
Добавив этот PHP-код в файл functions.php, вы можете исключить какую-либо рубрику (категорию) из RSS-фида. В примере выбрана категория с Перед ID нужно поставить минус .
function true_exclude_category($query) { if ($query->is_feed) { $query->set('cat','-45'); } return $query; } add_filter('pre_get_posts', 'true_exclude_category');
Вы также можете исключить несколько рубрик. Для этого просто перечисляем их ID через запятую, не забывая при этом ставить минусы.
function true_exclude_category($query) { if ($query->is_feed) { $query->set('cat','-45,-5,-75'); } return $query; } add_filter('pre_get_posts', 'true_exclude_category');
Если вы не знаете, где достать ID рубрик, загляните в этот пост.
Миша
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Пишите, если нужна помощь с сайтом или разработка с нуля.
Как исключить категорию / рубрику из RSS-ленты блога на WordPress
В этой статье вы узнаете, как не выводить определенные посты в rss-ленту.
Когда у вашего блога уже достаточно большая база подписчиков, вы начинаете дорожить ими и беспокоиться о том, насколько интересно им получать вашу рассылку. Иногда вы пишите статьи специально для SEO, которые не сильно интересны для людей. Или хотите осветить какую-то очень узкую тему, которая будет интересна одному проценту ваших читателей. А может быть, в вас проснулось неугомонное желание работать и вы начали публиковать по три статьи в день.
Все это может стать причиной, что подписчики устанут от ваших рассылок и начнут отписываться. Чтобы этого избежать, мы займемся созданием особой рубрики, статьи которой не будут попадать в RSS-ленту, а соответственно и на почту подписчиков.
Как сделать, чтобы определенные посты не попадали в рассылку.
Способ первый:

- Узнаем ID рубрики, которую будем исключать. Для этого переходим в «Записи -> Рубрики», наводим указателем мыши на нужную рубрику и смотрим на параметр tag_ID в строке состояния браузера.
- Открываем файл functions.php активной темы. Для этого заходим в «Внешний вид -> Редактор», в правой колонке ищем Функции темы (functions.php) и добавляем в конец файла код:
1 2 3 4 5 6 7
function exclude_category($query) { if ($query->is_feed) { $query->set('cat','-85,-115'); } return $query; } add_filter('pre_get_posts','exclude_category');

где через запятую перечислены ID категории, которые вы хотите скрыть из RSS-ленты.
Файл с функциями темы также можно открыть, зайдя по ftp. При вставке кода, обратите внимание, чтобы закрывающий символ ?> остался после вставленного вами кода.
Способ второй:
Можно исключить посты из рассылки, прописав ID рубрики прямо в ссылке на rss-ленту. Для этого измените адрес вашей rss-ленты на следующий:
http://ваш-сайт.ru/feed?cat=-84,-115
где через запятую перечислены ID скрытых категорий. Данный способ плох тем, что ID скрытых категорий будут видны в адресной строке читателей ленты. Есть третий способ скрыть категории из RSS ленты – использовать плагин Exclude Plugin Settings. Но я не буду про него писать, т.к. он сложнее предыдущих и я не советую этот способ. Большое количество плагинов негативно сказывается на скорости работы сайта, поэтому старайтесь обходиться без плагинов, когда это возможно. На этом все!
Скрываем записи определенных рубрик с главной страницы
После публикации, новая запись появляется на главной странице в списке постов в блоге. При этом на главной выводятся записи из всех рубрик, что может быть нежелательно для некоторых блогов. Так, например, недавно, в процессе работы над одним сайтом, у меня возникла необходимость скрыть записи из некоторых рубрик с главной страницы. И я решила об этом написать.
Для удаления рубрики с главной страницы wordpress существует большое количество плагинов. Один из них – это Frongpage Category Filter.
Но, чтобы не перегружать блог плагинами, я советую скрывать рубрики без использования плагина, с помощью небольшой функции. Давайте рассмотрим эту функцию подробнее:
Как исключить записи и рубрики из вывода WordPress

Сегодня хочу затронуть одну из популярных тем, которая касается WordPress. Если Вы владеете своим блогом использующим WordPress, то возможно столкнулись с надобностью исключить вывод определенных записей или даже рубрик из цикла на главной странице, например. Схожим может быть исключение записей и рубрик из поиска, rss ленты и архивов статей.

Когда возникает такая необходимость? Например, вы распределили материалы своего сайта по рубрикам, а в некоторых Вам нужно добавить материал, который не совсем соответствует тематике сайта, но все же необходим и Вы не хотите. чтобы он светился на главной или вообще появлялся в ненужных местах. Он должен быть доступен только по определенной ссылке.
В моей практике, очень часто встречаются ситуации когда нужно отфильтровать содержимое главной страницы и других разделов. Для того чтобы это сделать понадобится сделать совсем не много. Исключить записи и рубрики из цикла можно с помощью функций, добавленных в файл functions.php Вашей темы WordPress
Начнем по порядку, первая функция будет исключать записи из определенных категорий. Например Вам нужно исключить записи из рубрик с айди 1 и 2. То есть будут исключены полностью все записи из данных рубрик.

Чтобы определить айди рубрик, нужно в админке перейти в список рубрик и навести курсором на нужную. Внизу окна браузера с правой стороны появится ссылка внутри которой будет что-то типа то есть айди этой рубрики 1.
Открываем functions.php для редактирования и в самый его конец, перед закрывающим тегом PHP — ?>, если его нет, то просто в конце добавляем такую функцию:
function exclude_category($query) < if ($query->is_home)< $query->set('cat','-1, -2');> return $query; > add_filter('pre_get_posts','exclude_category');
В третей строке указываем айди рубрик с отрицательным значением, записи из которых нужно исключить, как и говорил в примере это рубрики с айди 1 и 2.
Теперь рассмотрим случай как исключить записи из архивов WordPress. Делаем все по принципу первого метода.
function exclude_category($query) < if ($query->is_archive)< $query->set('cat','-1, -2');> return $query; > add_filter('pre_get_posts','exclude_category');
Третий вариант, это как исключить записи из результатов поиска WordPress. Так же добавляем функцию в functions.php
function exclude_category($query) < if ($query->is_search)< $query->set('cat','-1, -2');> return $query; > add_filter('pre_get_posts','exclude_category');
ну и последний, исключение из RSS ленты.
function exclude_category($query) < if ($query->is_feed)< $query->set('cat','-1, -2');> return $query; > add_filter('pre_get_posts','exclude_category');
Вы могли заметить что условие где исключать записи задается во второй строке всех функций.
- $query->is_home — исключение из главной страницы.
- $query->is_archive — из архивов
- $query->is_search — из поиска
- $query->is_feed — из RSS.
Далее идет уже более масштабное исключение, которое позволит убрать записи одновременно с главной страницы, rss ленты, архивов и поиска. То есть предыдущие три варианта объединены в одну функцию, что довольно удобно. Так что если Вам нужно исключить сразу в нескольких местах, то такой вариант Вам лучше всего подойдет.
function exclude_category($query) < if ($query->is_feed || ($query->is_home || ($query->is_search || ($query->is_archive))))< $query->set('cat','-1, -2');> return $query; > add_filter('pre_get_posts','exclude_category');
Теперь давайте рассмотрим тот случай когда нужно исключить не целую рубрику, а только определенные записи. То есть рубрика будет выводится как есть за исключением лишь нескольких записей. В этом нам поможет схожие функции, которые и сделают всю работу.
Первая функция исключит определенные записи с главной страницы.
function exclude_post($query) < if ($query->is_home) set('post__not_in', array(55, 56) );> return $query; > add_filter('pre_get_posts','exclude_post');
Как видите мы исключаем записи с айди 55 и 56. Айди записей можно узнать аналогичным способом как и айди рубрик. То есть заходите в список записей, находите нужную, наводите курсор на ее название и внизу смотрите в ссылке ее айди.
Как исключить определенные записи из RSS.
function exclude_post($query) < if ($query->is_feed) set('post__not_in', array(55, 56) );> return $query; > add_filter('pre_get_posts','exclude_post');
Как исключить определенные записи из поиска.
function exclude_post($query) < if ($query->is_search) set('post__not_in', array(55, 56) );> return $query; > add_filter('pre_get_posts','exclude_post');
Как исключить определенные записи из архивов.
function exclude_post($query) < if ($query->is_archive) set('post__not_in', array(55, 56) );> return $query; > add_filter('pre_get_posts','exclude_post');
Как исключить определенные записи из всего вышеприведенного сразу.
function exclude_post($query) < if ($query->is_feed || ($query->is_home || ($query->is_search || ($query->is_archive))))< $query->set('post__not_in', array(55, 56) );> return $query; > add_filter('pre_get_posts','exclude_post');
Статья получилась не маленькой, но если разобраться то сложного ничего нет.
На этом все, спасибо за внимание.
Якщо Вам була корисна моя праця, можете фінансово підтримати сайт або відключити блокувальник реклами, що займе 2 хвилини 🙂
