如何在搜索结果中排除商业商品类别?

时间:2020-06-04 作者:AlanP

我正在寻找一种方法,使用pre\\u get\\u posts操作和$query->set()从Woocommerce的搜索结果中排除产品类别。我正在使用Wordpress搜索?s=关键字搜索。我知道函数将这样开始:

add_action(\'pre_get_posts\', \'exclude_product_category\');
function exclude_product_category( $query ) {

    global $wp_the_query;

    if ( ( ! is_admin() ) && ( $query === $wp_the_query ) && ( $query->is_search() ) ) {
       // more code goes here
    }
    return $query;
}
我想指定如下内容:

query_posts( array(
    \'post_type\' =>\'product\',
        \'tax_query\' => array(
           array(
               \'taxonomy\' => \'product_cat\',
               \'field\' => \'id\',
               \'terms\' => array(18),
               \'operator\' => \'NOT IN\',
               ),
        )
     ));    
我将如何实现这一点?

1 个回复
SO网友:AlanP
function exclude_product_category( $query ) {

    if ($query->is_search()) {
        $tax_query = (array) $query->get(\'tax_query\');

        $tax_query[] = array(
               \'taxonomy\' => \'product_cat\',
               \'field\' => \'slug\',
               \'terms\' => array(\'excluded-category\'),
               \'operator\' => \'NOT IN\'
        );        
        
        $query->set(\'tax_query\', $tax_query);        

    }
    return $query;
}

相关推荐

Search redirects to index

我打算使用标准的WordPress搜索,但当我尝试搜索时,我使用的是索引,而不是搜索结果。搜索url似乎正确:https://example.com/blog/?s=admissions搜索表单<form role=\"search\" method=\"get\" class=\"search-form\" action=\"https://example.com/blog/\"> <label for=\"search-form-5cb5f4940c0aa\">