! Михалика - запросто с WordPress:
доступная ручная работа по правилам оптимального интернет(а)
Здравствуйте !
— отредактировано:  2017-04-17
издатель:   в теме: Контент, шапка site: кодингS  реплики: 2 комментария
 
Запросто с WordPress - студия занимательная МИХАЛИКА

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

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

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

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

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


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

 

 

 

 

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

 

 

 

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

 

 

Теория кода:

 

Создаём такой запрос (относительно отдельных записей 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() — общее время

 

 

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

 

 

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

 

 

 

 

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

 

 

 

 

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

 

 

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

 

 

 

 

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

 

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

 

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

 

2 —

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

 

 

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

 

 

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

 

 

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

 

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

 

 

 

 

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

 

 

 

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

 

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

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

 

 

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

 

 

 

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

 

 

 

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

 

 

 

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

 

 

 

 

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

 

 

 

 

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

 

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

 

 

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

 

 

 

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

 

 

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

 

 

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

 

 

 

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

 

 

Подписаться на life-News студии занимательная Михалика
SendPulse - NoSpamX || Михалика ©

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



mihalica.ru

 


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

 

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

 


Благодарности)) и вопросы в комментариях - помогу… в чём дюжу
А также Вы можете просто:
Нажатия на кнопочки определяют Ваше высокое гражданское сознание
ещё статьи по теме:

меточная навигация:


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

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

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

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

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

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

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

 для диалога необходимо принять правила кофиденциальности *
Яндекс.Метрика