Рассмотрим как можно исключить статьи из определенных категорий, которые не должны появляться в результатах поиска 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.