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.