Как исключить записи и категории из главной страницы WordPress, rss ленты, категорий и архивов без плагинов

Здравствуйте, ребята!

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

Также узнаете, как исключить целые категории, а не только конкретные записи. Покажу множество вариантов, как с плагинами, так и без них. В общем, все как всегда.

  1. В каких случаях применять?
  2. Без плагина
  3. Плагины

В каких случаях применять?

Нужда исключить некоторые записи, то есть их анонсы, из главной страницы по большей части существует на персональных блогах, когда помимо больших качественных статей для постоянной аудитории стоит еще наполнять ресурс простыми SEO оптимизированными статьями.

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

Например, данную статью вы не найдете на главной странице моего блога ни на одной их страницы пагинации (постраничной навигации). В то же время, анонс статьи виден в рубрике "Полезное" и на странице карты сайта "Все статьи".

к содержанию ↑

Без плагина

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

Ниже я буду давать различные куски кода, которые стоит размещать в файле шаблона functions.php.

к содержанию ↑

Исключение конкретных записей по ID

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

В строке 3 числа 1 и 2 являются ID записями, которые не будут отображаться на домашней странице. Прописывать нужно через запятую.

ID записи, страницы и категории узнаете в адресной строке браузера при просмотре через редактор.

Следующий вариант позволит исключить записи из RSS ленты.

к содержанию ↑

Исключение из RSS ленты

Такой код позволит исключить анонсы из новостной ленты и не отправлять их по базе e-mail, если используете сервис подписки и анонсирования с помощью Feedburner.

Добавление записей в этом случае и во всех остальных происходит аналогично.

к содержанию ↑

Исключение из рубрик и архивов

Для исключения записей со страниц рубрик, стоит использовать следующий код.

Данный код можно модифицировать и применить исключение из архивов. Нужно во 2й строек заменить функцию is_category на is_archive.

к содержанию ↑

Исключение из страницы поиска

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

к содержанию ↑

Комбинирование нескольких вариантов

Можно совместить все выше предоставленные варианты и исключить записи из всех типов страниц сразу или выборочно на необходимых.

Если хорошо посмотреть на все коды, то во 2й строек можно увидеть условие, в котором задан параметр типов страниц для отключения отображения в них анонсов записей:

  • is_search
  • is_category
  • is_feed
  • is_home

Можно комбинировать все варианты и исключить записи отовсюду или же на некоторых страницах. Например,  для исключений из рубрик и главной стоит разместить в файле functions.php следующий код.

Во 2й строке с условием (if - если) прописаны параметры для категорий (is_category) или главной (is_home).

Замечу, что каждый следующий параметр прописывается внутри предыдущего через 2 вертикальных черты и находится в своих скобках. То есть, посмотрев на предыдущий код увидите, что второе условие для главной страницы заключено в свои скобки и находится внутри общих скобок, которые оборачивают первое условие для категорий.

Если стоит добавить какое-то 3е условие, например для страниц архивов, то стоит его добавить внутри скобок с условием для главной (is_home) и прописать через 2 вертикальные черты. На практике это выглядит следующим образом.

Таким же принципом добавляйте для исключения и другие типы страниц.

Следующим вариантом исключения записей является исключения целых рубрик (категорий).

к содержанию ↑

Исключение целых категорий

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

Структура кода практически аналогична. В нем лишь меняется параметр, который задает исключение поста или категории. В ранее рассмотренных случаях в последней строке был задан параметр исключения записи exclude_post. В новом коде его стоит заменить на exclude_cat.

Как видим, последняя строка потерпела изменений и 3я строка, где изменен параметр, считывающий ID рубрики. ID в данном случае прописывается через черточку, но так же само через запятую.

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

Итак, способы без плагина мы рассмотрели. Имеется еще вариант исключения записей о тегам, но сейчас теги уже не очень актуальны на 99% ресурсов. Если вам необходима такая информация, то напишите в комментариях об этом, пожалуйста. Сразу все добавлю.

к содержанию ↑

Плагины

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

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

к содержанию ↑

Плагин Simply Exclude

Скачать плагин можно, как через консоль WordPress с помощью поиска, так и с официального сайта WordPress.

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

После установки и активации сразу переходим в его настройки.

Изначально в настройках плагина все выставлено так, что при активации чек-бокса (рассмотрим чуть ниже) нужные страницы (записи, категории, страницы) будут помечены, как "разрешены для отображения". Таким образом для каждого типа страниц нужно будет проставить все чек-боксы, чтобы все отображалось.

Более логично будет выставить такой вариант, когда активировав чек-бокс (например, для главной страницы) он будет помечать статью или что-то другое, как запрещенное для отображения.

В настройках имеются 3 вкладки, которые призваны настроить параметры для разных типов страниц:

  • Taxonomies (таксономии) - настройка для функционирования плагина в разделах админ-панели WordPress: рубрики и метки;
  • Post types (типы постов) - для типов постов: статьи и страницы;
  • Users - настройки для пользователей.

Сейчас я дам скриншот настроек первой вкладки (таксономии) и объясню параметры, которые стоит выставить.

  • В первом блоке настроек "Active" необходимо выставить чек-бокс "Active", чтобы плагин добавлял нужные чек-боксы для отключения отображения в рубрики или любые другие типы страниц;
  • Во втором блоке ставим все параметры напротив варианта "Exclude". Он означает, что при включенном чек-боксе в редакторе каждого типа страниц, она будет скрыта от отображения и новые статьи будут по умолчанию открыты для показа. Если поставить параметр "Include only", то поставив чек-бокс, записи будут открыты для показа и новые статьи по умолчанию будут скрыты. Если выбран второй вариант "Include only", то после установки плагина все записи будут скрыты и нужно будет выставить вариант "Exclude";
  • В блоке "Show/Hide" ставим параметр "Show", чтобы нужные чек-боксы отображались в каждом типе страниц для возможности отключения или разрешения отображения.

Такие же параметры стоит проставить и на остальных 2х вкладках настройек плагина Simply Exclude.

Например, вот скриншот вкладки "Post types".

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

Теперь по поводу работы самого плагина. Когда проставили нужные параметры, то можно переходить в редактор каждого типа записей и ставить чек-боксы напротив тех страниц, где нужно исключить их отображение.

Например, чтобы проставить настройки для записей, можно перейти в редактор необходимой статьи или же через пункт все статьи. И там и там будут нужные чек-боксы. В редакторе в правой колонке будет блок "Simply Exclude", содержащий 4 чек-бокса для скрытия записи и страниц:

  • Archives - категорий и архивов;
  • Feeds - RSS ленты;
  • Front/Home - главной;
  • Searches - поиска.

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

В пункте админ-панели WordPress "Все записи" напротив каждого материала в новой колонке с названием "Simply Exclude show" также будут эти 4 чек-бокса. То же самое касается и рубрик. Будет добавлена новая колонка со всеми чек-боксами.

Вот и все по этому плагину. Установив его вы можете очень быстро и гибко изменять параметры отображения конкретных записей или целых рубрик без вмешательства в файлы шаблона.

к содержанию ↑

Плагин Exclude Categories

Плагин предназначен только для скрытия целой рубрики из главной страницы и RSS ленты. Так как этот вариант не требует особой гибкости (создал один раз рубрику и туда добавляет статьи), то я рекомендую реализовать исключение целой рубрики кодом (см. пункт 2).

Скачать плагин можете по кнопке ниже.

После его установки перейдите в настройки (Настройки - Exclude Category) и выберите необходимую рубрику для исключения ее с главной страницы.

Исключение всех записей какой-то рубрики - широко распространенный вариант. Но я вижу в нем недостаток, так как на сайт приходится сильно много публиковать статей для привлечения поискового трафика и все они будут по различным вопросам одной темы.

А пихать различные материалы в одну рубрику - не очень хорошо.

Такой вариант также часто используется при активной продаже ссылок на сайте. Владелец создает рубрику и все статьи с продажными ссылками публикует в него. И это также не очень хорошо, так как сейчас веб-мастера требуют размещение ссылки в одном из основных разделов сайта, чтобы она была хотя бы немного кликабельна и имела эффект при продвижении.

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

Желаю прекрасного настроения и великолепного вам дня. До встречи.

С уважением, Константин Хмелев!

40 лет Победы51937Украина, Днепропетровская обл., г. Днепродзержинск,+38 093 338 11 41
Комментариев: 18
  • Спасибо! Очень полезная статья!
    Молодец!

  • Спасибо за код без плагина! Работает на УРА! Очень достойная статья

  • Спасибо, дружище. Искал код, который исключает определенные страницы из поиска, но то, что находил, видимо для новых версий WP он не работает. А здесь, как раз то, что нужно. Благодарю.

    • Всегда пожалуйста)

  • С этим плагином все работает, за исключением того, что надо, не убирает он новости с главной(

  • к сожалению у меня плагин не заработал ... придется пробовать вариант без плагина....

    • Тоже заметил, что на одном сайте не заработал нормально. Пришлось использовать код.

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

  • Здравствуйте Константин очень полезная информация наконец-то разобрался спасибо жду еще статей

  • Благодарю! Очень доходчиво и лаконично. Даже мне, начинающему пользователю вордпресса, все ясно.

  • Код для исключения по ID записи отлично работает, спасибо за статью.

  • Спасибо большое))) нашёл вашу статью первую)) применил способ с плагином)

  • Константин, привет. А можно как-нибудь, без перечисления рубрик исключить все, которые находятся в родительской. Например, есть рубрика -все статьи, и её ид 5. И в ней есть подрубрики: связь, банки, деньги, и т.д. их , подрубрик много. И все они в родительской у которой Id =5. Можно ли на уровне родителя исключить все разом? Спасибо!

    • Здравствуйте. Не понял суть вопроса. Что значит без пересечения? Просто перечислите ИД этих подрубрик, да и все.

  • Без видео наверное целый час бы разбирался)

  • Спасибо! Помогли!

  • Извиняюсь. Профан в этом деле. Куда и в какой файл нужно впихнуть этот код
    function exclude_post($query) {
    if ($query->is_category)
    {$query->set('post__not_in', array(1, 2) );} // id записи (поста)
    return $query; }
    add_filter('pre_get_posts','exclude_post');

    • Ниже я буду давать различные куски кода, которые стоит размещать в файле шаблона functions.php

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *