Comment puis-je obtenir uniquement des conditions parentales?

19

Existe-t-il un moyen d'obtenir uniquement des termes parents à partir d'une taxonomie ou d'une catégorie personnalisée?

Mamaduka
la source

Réponses:

38

Oui, passez simplement le paramètre parent get_termslorsque vous l'appelez, comme l'a souligné Michael.

Depuis WP 4.5, c'est l'utilisation recommandée:

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

Avant WP 4.5, c'était l'utilisation par défaut:

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

Renvoie tous les termes dont la valeur parente est 0, par exemple. termes de haut niveau.

t31os
la source
Il renvoie un tableau vide pour les taxonomies personnalisées :(
Mamaduka
Les termes de cette taxonomie sont-ils associés à une publication (ou un type personnalisé)? Sinon, vous devrez transmettre le hide_emptyparamètre, en le définissant 0également, afin que vous puissiez voir les termes actuellement non utilisés.
t31os
Notez que cela n'obtiendra que le niveau parent 1, le terme «mère». Pour récupérer tous les ancêtres, utilisez get_ancestors(TERM_ID, TAXONOMY, 'taxonomy') developer.wordpress.org/reference/functions/get_ancestors
jave.web
2

pour les modèles d'e-mails woocommerce, utilisez les éléments suivants:

$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 . ')';
3243
la source
5
veuillez ajouter quelques explications sur la façon dont votre code pourrait résoudre la question. OP n'a pas posé de question sur les modèles d'e-mails de woocommerce.
iEmanuele
1
 $archive_cats= get_terms( 'archivecat', 'orderby=count&hide_empty=0&parent=0' );
ashraf mohammed
la source
3
En quoi est-ce différent de la réponse (déjà acceptée) proposée il y a plus de deux ans?
tfrommen
avez-vous vu des commentaires sur la réponse (déjà acceptée)? si aucune autre réponse n'est utile, pourquoi la question est-elle toujours ouverte?!
ashraf mohammed
Il y avait une seule question concernant les termes qui n'apparaissaient pas, qui n'était pas liée à la question d'origine, j'ai abordé cette question dans un commentaire en réponse (car cela n'avait aucune incidence sur la validité ou l'exactitude de la réponse déjà fournie).
t31os
1
Veuillez répondre à cela dans une modification. Expliquez votre code.
kaiser