Если вы придерживаетесь какого-то разделения между постами в блоге и обычными страницами, то часто нет смысла в том, чтобы последние появлялись в результатах поиска.
По умолчанию WordPress будет включать страницы вашего сайта в результаты поиска. Для большинства сайтов это не нужно или нежелательно. Чтобы изменить это поведение, мы можем добавить простую функцию в наш файл functions.php активной темы Вордпресс, чтобы отфильтровать эти страницы в наших результатах поиска.
Мы можем просто полностью исключить все страницы из результатов поиска следующим сниппетом:
function exclude_posts_from_search($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','exclude_posts_from_search');
По-сути, мы просто добавили строчку, которая отвечает за ограничения по типу записи:
$query->set('post_type', 'post');
Теперь вы можете сами управлять своими результатами поиска на WordPress.
Просто скопируйте и вставьте эту функцию в файл functions.php вашей темы WordPress:
/**
* This function modifies the main WordPress query to remove
* pages from search results.
*
* @param object $query The main WordPress query.
*/
function tg_exclude_pages_from_search_results( $query ) {
if ( $query->is_main_query() && $query->is_search() && ! is_admin() ) {
$query->set( 'post_type', array( 'post' ) );
}
}
add_action( 'pre_get_posts', 'tg_exclude_pages_from_search_results' );
Эта функция делает именно то, что нам нужно. Изменяя основной запрос WordPress с помощью хука pre_get_posts
, мы можем определить, что мы хотим отображать в наших результатах поиска.
В этом случае все, что мы хотим показать, - это контент из наших записей, а не из наших страниц.
Вот и всё! Просто сохраните файл и проверьте поисковый запрос у себя на сайте. Вы исключили страницы из результатов поиска WordPress.