Como posso obter apenas os termos dos pais?


19

Existe alguma maneira de obter apenas termos pai da taxonomia ou categoria personalizada?

Respostas:


38

Sim, basta passar o parâmetro pai para get_termsquando você o chamar, como apontou Michael.

Desde o WP 4.5, este é o uso recomendado:

$myterms = get_terms( array( 'taxonomy' => 'taxonomy_name', 'parent' => 0 ) );

Antes do WP 4.5, esse era o uso padrão:

$myterms = get_terms( 'taxonomy_name_here', array( 'parent' => 0 ) );

Retornará todos os termos que tenham um valor pai de 0, ie. termos de nível superior.


Ele retorna uma matriz vazia para taxonomias personalizadas :(
Mamaduka 2/11

Os termos dessa taxonomia estão associados a uma postagem (ou tipo personalizado)? Caso contrário, será necessário repassar o hide_emptyparâmetro, configurando-o 0também para que você possa ver os termos não utilizados no momento.
T31os

Observe que isso só obterá o nível pai 1, o termo "mãe". Para recuperar todos os antepassados, de uso get_ancestors(TERM_ID, TAXONOMY, 'taxonomy') developer.wordpress.org/reference/functions/get_ancestors
jave.web


2

para modelos de email de woocommerce, use o seguinte:

$terms = get_the_terms( $_product->id , 'product_cat');
    if($terms) {
        foreach( $terms as $term ) {
            $term = get_term_by("id", $term->parent, "product_cat");
            if ($term->parent > 0) {
                $term = get_term_by("id", $term->parent, "product_cat");
            }
            $cat_obj = get_term($term->term_id, 'product_cat');
            $cat_name = $cat_obj->name;
        }
    }
echo '<br />('. $cat_name . ')';

5
adicione algumas explicações sobre como seu código pode resolver a questão. O OP não fez uma pergunta sobre os modelos de email do woocommerce.
iEmanuele 02/09

1
 $archive_cats= get_terms( 'archivecat', 'orderby=count&hide_empty=0&parent=0' );

3
Como isso é diferente da resposta (já aceita) proposta há mais de dois anos?
tfrommen

você viu comentários na resposta (já aceita)? se não há mais respostas que não sejam úteis, por que a pergunta ainda está aberta ?!
Ashraf Mohammed

Houve uma única consulta com relação aos termos que não apareceram, que não estavam relacionados à pergunta original, resolvi esse problema em um comentário de resposta (como não tinha relação com a validade ou a exatidão da resposta já fornecida).
T31os

11
Aborde isso em uma edição. Explique seu código.
Kaiser
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.