Filtragem de resultados de pesquisa

Eu tenho páginas, postagens e categorias e produtos de produtos Woocommerce no meu site. Quero limitar a pesquisa de pesquisa padrão wordpress para que ele retorne as postagens, as páginas, as categorias de produtos, mas NÃO os produtos individuais. Estou usando o seguinte código em minhas functions.php com o qual posso facilmente mostrar apenas posts e páginas. O que eu preciso agora é mostrar as categorias de produtos de Woocommerce, juntamente com minhas postagens e páginas no resultado da pesquisa, mas NÃO os produtos individuais. Por favor me ajude aqui.

 function searchfilter($query) { if ($query->is_search && !is_admin() ) { $query->set('post_type',array('post','page')); } return $query; } add_filter('pre_get_posts','searchfilter'); 

Solutions Collecting From Web of "Filtragem de resultados de pesquisa"

Talvez seja necessário include uma tax_query para a taxonomia Woocommerce (chamada ‘product_cat’):

  $tax_query = array( array( 'taxonomy' => 'product_cat' ), ); $query->set( 'tax_query', $tax_query ); } return $query; } 

No entanto, você terá que garantir que você possa retornar postagens e páginas e categorias de produtos e também observar que os resultados da pesquisa serão misturados juntos.

Eu teria pensado que uma solução melhor, ao invés de filtrar no nível functions.php, seria adaptar sua search.php para a exibição dos resultados da pesquisa. Você pode então ser bem direcionado, por exemplo, mostrar:

 Posts with this search include: PostX, PostY, PostZ. 

E então outro loop com:

 Pages with this search include: PageA, PageB, PageC. 

E então outro loop com:

 Product Categories with this search include: Product Cat A, Product Cat F, Product Cat Z. 

Esse é o tipo de resultado que você está procurando, ou você gostaria de filtrar TODAS as pesquisas em seu site e misturar os resultados?

 add_action('pre_get_posts','search_filter_exc_posts'); function search_filter_exc_posts($query) { // Verify that we are on the search page & this came from the search form if($query->query_vars['s'] != '' && is_search()) { $q_tax_query = $query->query_vars["tax_query"]; // append product categories to current tax query. $query->set('tax_query', $q_tax_query[]=array('taxonomy'=>'product_cat') ); } }