Как скрыть в поиске по сайту на wordpress страницы, записи и рубрики по id

1157

Поиск на wordpress в штатном режиме сканирует все, что есть в БД: страницы, записи, категории и пр. Но иногда возникает необходимость убрать из поиска эти самые страницы, записи и рубрики. Особенно, когда на сайте есть магазин на woocommerce, и в поиске по товарам высвечиваются страницы и записи сайта. Чтобы этого не происходило, публикации, категории и страницы можно скрыть в поиске wordpress полностью или по id. Для этого необходимо внести небольшие изменения в файл functions.php  вашей темы.

Как в поиске по сайту скрыть записи некоторых рубрик (категорий) по ID

Для этого в functions.php нужно добавить следующий код:

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

Здесь -2 и -3 - это id рубрик, записи которых необходимо скрыть

Скрыть в поиске все записи (публикации)

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

Скрытие в поиске wordpress всех страниц (page)

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

Убрать из поиска записи по id

Чтобы в поиске по сайту скрыть определенные записи или страницы, необходимо указать их ID в виде массива

function hide_pages_from_search($query) {
if ($query->is_main_query() && is_search()) {
$hide_ids = array( 247, 170); // id записей
$query->set( 'post__not_in', $hide_ids );
}
return $query;
}
add_filter( 'pre_get_posts','hide_pages_from_search' );
Нужен сайт, брендинг или продвижение в сети? Обращайтесь в рекламное агентство аквилон. Многолетний опыт и более 60 проектов в разных сферах бизнеса.

.

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

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

*
code