Ce snippet permet de lister les custom taxonomy dans une page de template wordpress.

Problématique :

Sur un site j’ai utilisé les custom post type et les custom taxonomy pour présenter un produit. Il fallait que je liste sur une page toute les catégories (custom taxonomy) de ces custom post type pour accéder directement au modèle de produit.

Je croyais que les custom taxonomy c’était comme les catégories natives.

J’ai pas mal cherché parce qu’au début j’utilisais la fonction get_categories () qui fonctionne très bien. Autant pour les catégories natives que pour les customs taxonomy. Mais j’ai voulu y ajouter le lien correspondant. Je suis donc passé par la fonction get_category_link().

Et là, problème, impossible d’afficher le lien qui lui correspond j’ai essayé plusieurs solutions sans y arriver. En creusant un peu dans la doc de WordPress je me suis apperçu que je n’utilisais pas du tout les bonnes fonctions.

En effet les customs taxonomy sont attaquable par les fonctions get_terms et get_terms_link et la on obtient toutes les informations désirées.

Solution:

Voici la première version qui ne me retrouve pas les liens :
[fusion_builder_container hundred_percent= »yes » overflow= »visible »][fusion_builder_row][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »][php]

    ‘post’,
    ‘orderby’ => ‘name’,
    ‘order’ => ‘ASC’,
    ‘hide_empty’ => 0,
    ‘hierarchical’ => 1,
    ‘taxonomy’ => ‘modeles’,
    ‘pad_counts’ => false );

    $categories = get_categories( $argsCat );
    foreach ($categories as $category) {

    ?>

  • term_id;
    $category_link = get_category_link( $catID );
    ?>

    <a href=" »>cat_name; ?>

    category_description; ?>

[/php]

Voici la version qui fonctionne :
[/fusion_builder_column][fusion_builder_column type= »1_1″ background_position= »left top » background_color= » » border_size= » » border_color= » » border_style= »solid » spacing= »yes » background_image= » » background_repeat= »no-repeat » padding= » » margin_top= »0px » margin_bottom= »0px » class= » » id= » » animation_type= » » animation_speed= »0.3″ animation_direction= »left » hide_on_mobile= »no » center_content= »no » min_height= »none »][php]
$terms = get_terms(‘modeles’,’hide_empty=0′);

echo ‘

    ‘;
    foreach ($terms as $term) {
    $term_link = get_term_link( $term, ‘modeles’ );
    if( is_wp_error( $term_link ) )
    continue;

    echo ‘

  • name . ‘ »>’ . $term->name . ‘
  • ‘;
    }
    echo ‘

‘;
[/php]

Mes sources :
http://codex.wordpress.org/Function_Reference/get_terms
http://codex.wordpress.org/Function_Reference/get_term_link[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]