Исключаем страницы из поиска

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

По умолчанию 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.

Была ли эта страница полезной?