Привет. Сам недавно сталкивался с этой задачей. Нашел и кусочек кода сохранил себе.
function searchExcludePages($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
$query->set('cat','-1,-2,-3,-4,-9');
}
return $query;
}
add_filter('pre_get_posts','searchExcludePages');
В этой строке
$query->set('cat','-1,-2,-3,-4,-9');
значения - это id категорий. "-" означает, исключение категорий из поиска. По сути исключая оставляешь нужные категории. Не очень удобно но работает. Если не ошибаюсь на wp-kama.ru есть полное описание и список параметров, которые можно передавать в эту функцию