Исключить категорию продуктов woocommerce из результатов глобального поиска WordPress

#wordpress #woocommerce

#php #wordpress

Вопрос:

Я использую этот код, чтобы исключить некоторую категорию сообщений из результатов поиска WordPress :

 function SearchFilter($query)
{
    if ($query->is_search)
    {
        $query->set('cat', '-709,-710,-614');
    }
    return $query;
}
add_filter('pre_get_posts','SearchFilter');
 

Моя проблема в том, что это не работает для категорий woocommerce, а продукты не фильтруются.
Как я могу также отфильтровать некоторые категории woocommerce?

Ответ №1:

Можете ли вы заменить свою категорию. надеюсь, это поможет вам.

 function wpse188669_pre_get_posts( $query ) {

   if (

       ! is_admin()

amp;amp; $query->is_main_query()

amp;amp; $query->is_search()

   ) {

       $query->set( 'post_type', array( 'product' ) );

       // set your parameters according to

     // https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

       $tax_query = array(

           array(

               // likely what you are after

               'taxonomy' => 'product_cat',

               'field'   => 'slug',

               'terms'   => 'category-2',

               'operator' => 'NOT IN',

           ),

       );

       $query->set( 'tax_query', $tax_query );

}

}

add_action( 'pre_get_posts', 'wpse188669_pre_get_posts' );
 

Комментарии:

1. Это работает для продуктов woocommerce, но не будет ли он фильтровать также сообщения с теми же условиями?

2. Вы хотите опубликовать фильтр, следует изменить таксономию