web-dev-qa-db-fra.com

get_terms parent pour le produit actuel uniquement

Je souhaite que quelqu'un puisse me donner un indice.

En fait, j'affiche toutes les catégories de produits (taxonomie produit_cat) sur des produits d'une page, en affichant également les enfants relatifs au produit lui-même.

Par exemple: Product-A a Cat1-parent> Cat1-child1, Cat1-child2 => Le code les affiche correctement, mais affiche également toute autre catégorie de parents appartenant à un autre produit existant .... résultat: je reçois un parent supplémentaire catégorie affichant sans enfants.

Je souhaite donc uniquement afficher les catégories parentes appartenant au produit lui-même.

Je pense qu'il me manque des connaissances au début du code avec la fonction get_terms

$parents = get_terms( 'product_cat' , array( 'parent' => 0 ) );

foreach( $parents as $parent ):

echo '<div class="parent '.$parent->slug.'">' . $parent->name . '</div>';
1

get_terms concerne l’obtention de tous les termes d’une taxonomie. get_the_terms saisit tous les termes liés à la publication.

Le problème est qu'il semble que vous souhaitiez ne renvoyer que les termes qui sont des catégories parentes, pas les enfants, et get_the_terms ne transmet pas de tableau d'arguments.

$terms = get_the_terms( get_the_ID(), 'product_cat' );

foreach ( $terms as $term ){
    if ( $term->parent == 0 ) {
        echo '<div class="parent '.$term->slug.'">' . $term->name . '</div>';
    }
}
1
socki03

Merci pour la leçon. Je comprends mieux maintenant. Je viens de changer le nom de mon terme et de l'insérer dans ma fonction complète: $parents = get_the_terms( get_the_ID(), 'product_cat' );

foreach ( $parents as $parent ):if ( $parent->parent == 0 ) {echo '<div class="parent '.$parent->slug.'">' . $parent->name . '</div>';}

Tu m'as beaucoup aidé. Je vous remercie!

0