настраиваем и работаем с Wordpress

Как спрятать категорию из общей ленты WordPress?

В общей ленте блога выводятся все посты вашего сайта. Бывает, что посты отдельной категории не хочется показывать в общей ленте. По разным причинам. Как это сделать в Wordpress.



Вы настроили свой блог на WordPress. У вас есть красивая Главная страница (Main page) и есть лента постов (Posts page). В ленте выводятся все статьи, которые вы создали. Но, иногда не хочется показывать посты из определенной категории в общей ленте. Как это сделать в WordPress без дополнительных плагинов?

Мой сайт посвящен велопутешествиям. 90% всех статей про велосипеды, путешествия и страны. И только небольшая часть с инструкциями для вебмастеров по настройке WordPress и продвижению блога. Я не хочу, чтобы эти статьи выводились в ленте про велосипеды. Они совершенно разные по тематике и будут непонятны основной аудитории сайта. Я должен исключить категорию WordPress из ленты.

Как можно настроить ленту постов?

Для начала несколько встроенных фишек WordPress для отображения ленты.

Прикрепленный пост. Это встроенная функция, когда вы можете выбранный пост всегда показывать на самом верху ленты, независимо от даты публикации. Даже если вы написали его три-четыре года назад, он будет висеть самым первым в ленте.

Очень просто, в настройках поставьте галочку в поле Make this post sticky.

Прикрепленный пост в ленте WordPress

Краткое описание. По умолчанию в ленте все посты выводятся полностью. То есть, если у вас есть статья на несколько скроллов, то посетители должны промотать ее полностью, прежде чем увидеть следующую. Не совсем удобно.

Чтобы исправить это нужно зайти в базовые настройки WordPress в раздел Reading и изменить отображение ‘Full text’ на ‘Excerpt’.

При этом необходимо заполнять поле Excerpt кратким описанием поста при каждом создании новой записи. Заполненный Excerpt поможет вам в продвижении для поисковиков и настройки Description.

Отключаем ненужную категорию из ленты

Теперь собственно переходим к главному. Первое, что нам понадобится — это выяснить ID нужной категории. Заходим в раздел «Категории» и наводим на название. В поле статуса появится строка, в которой нам необходимо запомнить параметр tag_ID=. В примере ниже, это 499.

Теперь идем в настройки темы WordPress в Редактор (Editor). Мы будем править самый важный файл functions.php. Поэтому, советую сделать резервную копию этого файла на случай, если вы сделаете ошибку и сайт не запустится.

Открываем functions.php в редакторе и добавляем следующие строки в самом низу файла перед закрывающимся кодом «с вопросиком» ?>

function exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'cat', '-499' );
}
}
add_action( 'pre_get_posts', 'exclude_category' );

Вместе 499 в третьей строке вы должный указать ваш ID категории, которую вы хотите исключить. Если нужно спрятать сразу несколько категорий, то укажите их через запятую. Тогда третья строка будет выглядеть примерно так.

$query->set( 'cat', '-499, -299, -55' );

Сохраните изменения в редакторе.

Теперь в ленте WordPress выводятся все новости, кроме исключенных категорий.