Рассмотрим как можно исключить статьи из определенных категорий, которые не должны появляться в результатах поиска WordPress.

function exclude_category_from_search($query) {
	if ($query->is_search) {
		$query->set('cat', '-XXX');
	}
	return $query;
}
add_filter('pre_get_posts','exclude_category_from_search');

Добавляем данный сниппет в файл functions.php и меняем XXX на ID нужной нам категории, чтобы получилось, например, так:

$query->set('cat', '-1');

Также можно исключить несколько категорий:

$query->set('cat', '-24,-45,-52');

Не забывайте знак минус (-) перед каждым числом.

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

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

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

Мы можем просто полностью исключить все страницы из результатов поиска следующим сниппетом:

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.

Статьи # #