Исключение категорий из поискового запроса

22 сент. 2014 г., 17:56:08
Просмотры: 14.6K
Голосов: 4

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

Я пробовал добавить следующий код, но это не сработало.

$search_query = query_posts(array('category__in' => array(-22, -21)));

Вот мой текущий код.

global $query_string;

$query_args = explode("&", $query_string);
$search_query = array();

foreach($query_args as $key => $string) {
    $query_split = explode("=", $string);
    $search_query[$query_split[0]] = urldecode($query_split[1]);
} // foreach

$searchq = new WP_Query($search_query);

while ($searchq->have_posts()) : $searchq->the_post();
0
Все ответы на вопрос 1
5

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

function wcs_exclude_category_search( $query ) {
  if ( is_admin() || ! $query->is_main_query() )
    return;

  if ( $query->is_search ) {
    $query->set( 'cat', '-22, -21' );
  }

}
add_action( 'pre_get_posts', 'wcs_exclude_category_search', 1 );

Этот код нужно вставить в файл functions.php вашей темы.

22 сент. 2014 г. 17:58:55
Комментарии

Спасибо за ваш ответ. Я пробовал похожие решения, которые нашел в интернете, но ни одно из них не сработало. Я начинаю думать, что, возможно, проблема в моей форме поиска. Сообщу, если что-то выясню.

Swen Swen
22 сент. 2014 г. 18:13:37

В итоге я решил свои проблемы, убрав "$query->" из "$query->is_search". Я сделал это потому, что нежелательные категории все равно отображались при пустом поисковом запросе.

Swen Swen
22 сент. 2014 г. 18:31:39

Извините за неосведомленность, но какова цель if ( is_admin() || ! $query->is_main_query() ) ?

drabello drabello
2 июл. 2017 г. 07:57:09

Отлично, а как это будет работать с категориями из пользовательских типов записей? Спасибо!

Yuri Yuri
13 нояб. 2020 г. 13:34:26

@Yuri не публикуй ответы как новые решения, и задавай новые вопросы как новые вопросы, а не комментарии https://wordpress.stackexchange.com/questions/ask

Tom J Nowell Tom J Nowell
13 нояб. 2020 г. 15:23:11