Afficher la taxonomy parente d'un Custom Post Type

custom post type taxonomy

Dans un listing, ou partout ailleurs tant que c'est dans une loop, voici comment afficher la catégorie mère d'un Custom Post Type pour avoir quelque chose du type :

Nom du produit
Nom de la catégorie mère

Pour l'exemple, disons que vous avez créé un Custom Post Type "produit" qui constitue le catalogue produit de votre site. Vous avez également créé une custom taxonomy "categorie" qui reprend l'arborescence de votre catalogue produit, et vous voulez afficher la catégorie mère du produit pour accompagner son nom... ça tombe bien, vous êtes exactement dans mon cas !

Sachant que j'ai dons mon cas 2 niveaux de catégorie (catégorie et sous-catégorie), et que les produits peuvent être rangés aux deux niveaux.

<?php
// récupération des termes de la taxonomy "categorie" du custom post type en cours
$terms = get_the_terms( $post->ID, 'categorie' );
// déclaration d'une variable array()
$categorieparent_id = array();
// pour chaque terme récupéré 
foreach ( $terms as $term ) { // pour chaque terme récupéré
          // s'il n'a pas de parent
          if ($term->parent == 0){
               // et bien on le tient, c'est le parent
               $categorieparent_id[] = $term->term_id; 
          // sinon
          } else {
               // on va chercher ses parents
               $categorieparent_id[] = $term->parent;
     }
}
// puis on prend le premier terme trouvé
$term_categorieparent_id = $categorieparent_id[0];
?>

L'idée étant de n'afficher qu'une catégorie parent, et puisqu'un produit n'est de toute façon pas censé être dans plusieurs catégories, je prends ici la première catégorie parente trouvée [0].

Ensuite, il ne reste plus qu'à afficher le nom de la catégorie avec son lien :

<?php // tout d'abord, récupérer les infos de la catégorie trouvée
$term_categorieparent = get_term_by('id', $term_categorieparent_id, 'categorie'); ?>
<!-- puis on affiche son nom avec un lien avec tout ce qui va bien dedans -->
<a href="<?php echo get_option('home'); ?>/categorie/<?php echo $term_categorieparent->slug; ?>" title="<?php echo $term_categorieparent->name; ?>" rel="nofollow">
<?php echo $term_categorieparent->name; ?></a>

Et voilà, ensuite, si vous en avez besoin à plusieurs endroits, il vaut mieux mettre ceci dans une fonction bien sûr.

Poursuivre votre lecture

4 commentaires : Afficher la taxonomy parente d'un Custom Post Type

  1. bob bylan

    21 février 2014

    j'ai lui votre article ça m'a beaucoup aider ; je voudrais savoir comment afficher ou trier les articles des sous catégorie

  2. Laurent

    21 février 2014

    Pour l'affichage d'articles spécifiques avec tri, je vous invite à consulter la fonction query posts dans le codex.

  3. ngita

    20 juin 2014

    Cette methode n'est pas du tout fiable à mon avis :

    1- il faut ecrire en dur la taxonomie
    2- si on a une liste d'articles d'un post_type via une boucle et on veut les taxonomies ou terms attachés c'est pas possible.

  4. Laurent

    20 juin 2014

    Bonjour ngita,
    le code que je livre ici sert à illustrer une manière de retrouver la taxonomy parent d'un custom post type, je le partage pour l'inspiration et non pour une utilisation en l'état. D’ailleurs, il commence à dater un peu.
    1 - je vous laisse le soin de remplacer 'categorie' par $categorie
    2 - effectivement, ça n'est pas l'objet de cet article... si on veut un beignet, il ne le fait pas non plus :)

Laisser un commentaire

Si vous insérez du code, merci d'utiliser les balises [php] en début et [/php] en fin, ou [html] et [/html]...