возможно заказать разработку или сопровождение, услуги вашего сайта/блога


обновлено: 2024-02-13 в теме: Контент, шапка site
Запросто с WordPress создание и продвижение сайтов ATs media

Как запретить вывод определённой записи или рубрики на главной странице сайта и т.д

О том, как запретить отображение (вывод) определённой статьи (записи) на главной странице или страничках архивов – рубрик, тегов, страниц поиска… в этой статье и разберёмся.

Решая нынешнюю задачу, рассмотрим несколько вариаций кодов:

Таким образом добьёмся наилучшего результата настройки структуры сайта, чтобы посетителю было удобнее ориентироваться, а нам, как админам, покойно на душе))

Акуна матата…


 

 

 

 

 

как исключить конкретную запись по id на главной страничке сайта

 

 

 

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

 

 

 

/** исключим конкретные записи с главной **/
add_filter('pre_get_posts','exclude_post');
function exclude_post($query) {
if ($query->is_home)
{
$query->set('post__not_in', array(4) ); // id записи (поста) - возможно указывать несколько id через запятую
}
return $query; 
}
/** исключим конкретные записи с главной **/

 

 

Теория кода:

 

Создаём такой запрос (относительно отдельных записей post) к базе данных exclude_post($query); далее указываем страницу для обработки запросом: у нас это is_home.

 

Далее создаём (скажем так – правило обработки и фильтра на отдачу информации из БД по запросу) исключения объекта из запроса: т.е запрос возвратится без указанного объекта – id 4.

 

return $query; } указание на то, что основной запрос к БД $query теперь отработает и  возвратит выборку с нашими коррективами – без id 4 – посредством фильтра финальной строки.

 

Что и требовалось!

 

 

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

А вообще, у меня в листе дофолоу есть ссылка на один хороший сайт wp-kama, на его страничках есть много полезного и по-русски сказанного)) хотя и несколько сложновато для новичка, но если хотите пройдите, ознакомьтесь.

 

 

Теперь по логике показанного выше кода разберёмся…

 

 

 

 

как исключить записи в каких-то иных страницах архивов

 

 

 

 

По коду выше видно, что ключевая логика работы кода заключается в условии is_home, а значит в строке 2:

 

if ($query->is_home)

 

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

 

Во второй строке кода должно получиться так:

 

if ($query->is_category)

 

 

И так далее, манипулируя условными тегами…

 

 

  1. is_home() – главная
  2. is_search() – страница поиска
  3. is_category() – категории (рубрики)
  4. is_tag() – теги (метки)
  5. is_archive() – страницы архивов
  6. is_author() – страницы авторов
  7. is_feed() – фид
  8. is_year() – дата – год
  9. is_month() – общее время

 

 

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

 

 

А вот статья, изучив которую можно выучиться как исключить из индексации странички архивов, авторов: это полезно в качестве избавления от “соплей” – дублей страниц.

 

 

 

 

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

 

 

 

 

…ну, например так…

 

 

/** исключим категории полностью **/
add_filter('pre_get_posts','exclude_cat');
function exclude_cat($query) {
if ($query->is_home)
{
$query->set('cat','-1, -22, -37'); // id требуемых категорий
}
return $query; 
}
/** фин - исключим категории полностью **/

 

 

 

 

Однако в мире известны случаи, когда админ требователен в своих желаниях: ему требуется так, что нужно исключить вывод записей одновременно и с домашней страницы (главной) и с каких-то иных, например, категорий…

 

В этом случае можно поступить разно:

 

1 – дописать добавочный пример кода с необходимыми параметрами (условных тегов) для выборки из Базы Данных только указанных записей.

 

2 –

…чтобы не громоздить много лишнего кода, …возможно комбинировать уже имеющийся код – добавляя соответствующие условные теги…

 

 

Посмотрите внимательно на следующий пример: в показанном выше коде, нужно заменить вторую строку на эту.

 

 

if ($query->is_category || ($query->is_home))

 

 

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

 

Добавляется каждый параметр через две вертикальные скобки || (разделитель) который условно заменяют if.

 

 

 

 

как исключить из “поиска по сайту” постоянные страницы

 


 

 

В самом деле, зачем они нужны в результате поиска?? незачем! Ну, по крайней мере, некоторые из них – точно..!

 

…чтобы напрочь исключить в результатах поиска по сайту постоянные страницы:

достаточно прописать к себе в файл функций (или добавочный файл функций functions.phpплагин – что весьма правильнее) такой код:

 

 

/** исключим постоянные страницы из результатов поиска **/
add_action( 'pre_get_posts', 'search_filter' );
function search_filter($query) {
if ( ! is_admin() && $query->is_main_query() ) {
if ($query->is_search) {
$query->set('post_type', 'post');
} } }
/** исключим постоянные страницы из результатов поиска **/

 

 

 

И здесь, как и во всех показанных кодах, мы воспользовались таким хуком из арсенала вордпресс: pre_get_posts – чтобы исключить из результатов поиска постоянные страницы

 

 

 

Готово дело!..

 

 

 

Однако – теперь узнаем решение ещё одного схоластического требования админа: (и это желание логично: уж коли однажды создали произвольный тип записей, то, возможно, включить эти записи в поиск по сайту весьма и весьма целесообразно)

 

 

 

 

включить в поиск по сайту произвольные типы записей

 

 

 

 

…блажь включения в поиск произвольных типов записей запросто решить так:

 

Вот такой код запишите на постоянное место жительства в файл функций, или плагин:

 

 

/** включаем в поиск произвольные "типы" записей **/
add_action('pre_get_posts', 'get_posts_search_filter');
function get_posts_search_filter( $query ){
if ( ! is_admin() && $query->is_main_query() && $query->is_search ) {
$query->set('post_type', array('post', 'my-tv') );
} }
/** включаем в поиск произвольные "типы" записей **/

 

 

 

…где my-tv – имя произвольного типа.

 

 

Ну вот как бы и всё… если что не ясно, спрашивайте …есть же комментарии…

 

 

…или вот ещё полезные статейка о том, как организовать различное количество выводимых записей на главной и страничках архивов сайта – этот вариант несколько полезнее в плане экономии ресурсов сайта к запросам к БД.

 

 

 

Удачи в работе творчестве…

 

 

Подписаться на life-News ATs media squad
SendPulse - NoSpamX || ATs media ©

!..подписываясь на обновления mihalica.ru
...расстаёмся с невежеством..!



mihalica.ru

 


На этом занавес представления опускается…
…на рампы пыль печальная ложится…

 

…а в кинозале кино начинается))

 


...вопросы в комментариях - помогу, в чём дюжу...
mihalica.ru !


Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...





Нажатия на кнопочки определяют Ваше высокое гражданское сознание

Поделитесь соображениями: Ваши мысли очень важны!

Внимание! Обязательные поля помечены *

  отныне доступен плагин: ats privacy policy ©


  1. Нихрена неполучается с метками организовать… запрет.
    Может както поможите в коде?? я бы….

    Ответить - Виталий

    • Стоп-стоп… Вы мне сюда пришлите все ваши желания, что-нибудь придумаем…

      Ответить - Михаил

  2. Спасибо вашей команде !Огромное! Очень много полезного нахожу. Хорошо настроено сео сайта вашего, потому как нахожу у вас всегда верные ответы на мои не всегда корректные запросы)

    Ответить - Luna

    • Привет, Luna!!
      Замечательно, коли мы оказались вам полезны! Будем стараться и впредь…
      А вы, если вдруг не нашли ответа, или чего – то не поняли – спрашивайте, не стесняйтесь…
      Заходите…

      Ответить - Михаил