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?

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.


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 . ')';

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' );

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.