Содержание
Поиск на wordpress в штатном режиме сканирует все, что есть в БД: страницы, записи, категории и пр. Но иногда возникает необходимость убрать из поиска эти самые страницы, записи и рубрики. Особенно, когда на сайте есть магазин на woocommerce, и в поиске по товарам высвечиваются страницы и записи сайта. Чтобы этого не происходило, публикации, категории и страницы можно скрыть в поиске wordpress полностью или по id. Для этого необходимо внести небольшие изменения в файл functions.php вашей темы.
Как в поиске по сайту скрыть записи некоторых рубрик (категорий) по ID
Для этого в functions.php нужно добавить следующий код:
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 рубрик, записи которых необходимо скрыть
Скрыть в поиске все записи (публикации)
if( ! is_admin() && $query->is_main_query() && $query->is_search ){
$query->set( 'post_type', 'post' );
}
}
add_action( 'pre_get_posts', 'search_filter' );
Скрытие в поиске wordpress всех страниц (page)
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 в виде массива
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' );
.