smsc banner 468x60smsc banner 728x90smsc banner 930x180etxt banner 468x60etxt banner 728x90etxt banner 930x180beget banner 468x60beget banner 728x90beget banner 930x180

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

Чтобы это осуществить нам нужно поправить основной запрос is_search() на хуке pre_get_posts. Рассмотрим примеры.

Как скрыть из поиска страницы

Вы можете использовать следующий код, чтобы оставить в результатах поиска только тип поста post.

add_action( 'pre_get_posts', 'skill_search_filter' );
function skill_search_filter( $query ){
if( ! is_admin() && $query->is_main_query() && $query->is_search ){
$query->set( 'post_type', 'post' );
}
}

Т.к. здесь нет такого метода как unset, мы можем только переназначить переменные методом set.

Что касается условий, то мы проверяем, что находимся не в админке, что это основной запрос и что это запрос поисковый.

Будьте аккуратнее, этим кодом вы исключите из поиска не только стандартные страницы, но и все записи пользовательского типа.

Как скрыть из поиска категорию

Чтобы исключить посты определенной категории из результатов поиска воспользуйтесь следующим примером:

add_action( 'pre_get_posts', 'skill_search_filter' );
function skill_search_filter( $query ){
if( ! is_admin() && $query->is_main_query() && $query->is_search ){
$query->set( 'cat','-2,-3' );
}
}

В результате работы этого фильтра будут исключены посты, которые находятся в категориях 2 и 3 из результатов поиска.

Если пост прикреплен одновременно к категориям 3 и 4, он не будет исключен из результатов поиска этим фильтром.

Как скрыть из поиска кастомный тип записи

Для исключения из поиска результатов произвольного типа записей достаточно установить аргумент 'public' = 'false' при регистрации (функция register_post_type()), но если такой возможности нет, вы также можете воспользоваться этим хуком.

Здесь нам понадобится модификация первого примера: нам нужно передать в $query только те типы постов, которые мы хотим оставить в результатах поиска.

add_action( 'pre_get_posts', 'skill_search_filter' );
function skill_search_filter( $query ){
if( ! is_admin() && $query->is_main_query() && $query->is_search ){
$query->set('post_type', array( 'post', 'portfolio', 'service' ) );
}
}

Например, этот код оставит в результатах поиска только посты, страницы портфолио и услуги.

Как скрыть из поиска записи автора

Чтобы скрыть записи определенного автора используйте следующий код:

add_action( 'pre_get_posts', 'skill_search_filter' );
function skill_search_filter( $query ){
if( ! is_admin() && $query->is_main_query() && $query->is_search ){
$query->set ( 'author','-8, -10, -12' );
}
}

В результате его выполнения будут исключены записи авторов, имеющих ID 8, 10 и 12.

С помощью плагина

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

beget banner 480x320beget banner 728x90beget banner 120x600jivo banner 480x320jivo banner 728x90jivo banner 120x600kwork banner 480x320kwork banner 728x90kwork banner 120x600

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

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

Ваш адрес email не будет опубликован.

Похожие посты

Как сделать webp без плагинов в WordPress

WebP — это современный формат сжатия изображений без потери качества, который напрямую влияет на скорость загрузки сайта. Конвертирование изображений из jpg и png в формат webp может дать существенный прирост в баллах по google page speed. Формат webp поддерживается большинством современных браузеров. Вы без труда можете найти плагины, которые помогут вам автоматически конвертировать изображения, добавленные…

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

При разработке своих сайтов вам может понадобиться вывести галереи изображений из произвольных папок без их загрузки в библиотеку. Давайте рассмотрим пример, как это сделать с помощью шорткода: Использование: [folder-gallery path=’/data/images/’] Как видите, функция принимает путь до искомой папки (обязательно с открывающим и закрывающим слешем), в функции устанавливаются разрешенные типы изображений и формируется вывод с классами…

Как изменить выравнивание и размер изображения при вставке в редактор WordPress

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