geral@slap.pt
+351 917502470

WORDPRESS: Esconder categoria “child” da página da categoria “parent”

Quando atribuímos categorias child a produtos no Woocommerce, os produtos ficam por defeito listados na categoria parent. Para os esconder é necessário adicionar o seguinte filtro. Estes filtros são colocados no ficheiro functions.php do vosso tema:

function exclude_product_cat_children($wp_query) {
if ( isset ( $wp_query->query_vars['product_cat'] ) && $wp_query->is_main_query()) {
    $wp_query->set('tax_query', array( 
                                    array (
                                        'taxonomy' => 'product_cat',
                                        'field' => 'slug',
                                        'terms' => $wp_query->query_vars['product_cat'],
                                        'include_children' => false
                                    ) 
                                 )
    );
  }
}  
add_filter('pre_get_posts', 'exclude_product_cat_children');

Este filtro vai remover da lista de produtos da categoria parent todos os artigos associados a uma categoria child da mesma.

Se não quisermos remover todos os artigos, mas apenas os produtos de uma child específica podemos fazê-lo alterando a query para o seguinte, por exemplo:

function exclude_product_cat_children($wp_query) {
if ( isset ( $wp_query->query_vars['product_cat'] ) && $wp_query->is_main_query()) {
    $wp_query->set('tax_query', array( 
                                    array (
                                        'taxonomy' => 'product_cat',
                                        'field' => 'slug',
                                        'terms' => array('cat', 'cao'),
                                        'operator' => 'NOT IN',
                                    ) 
                                 )
    );
  }
}  
add_filter('pre_get_posts', 'exclude_product_cat_children');

Este filtro vai remover da lista os produtos em que a child tenho a slug “cao”. Podemos mudar o field de slug para name, por exemplo, e evitar o facto da slug ter que ser única.

Se tiver dificuldade em resolver um problema relacionado com este ou outro tópico, contacte-nos!

Temos sempre uma solução para si!

geral@slap.pt
(+351) 917 502 470