Voici les codes pour un fil d’Ariane complet qui comprend aussi les Customs Post Type. 2 versions au choix (cela dépend de la structure de votre thème) une dans le « dur » direct dans le thème et l’autre dans le fichier functions.php
Il est important de faire un choix entre woocommerce et un custom post type ligne 12 (si vous n’avez ni l’un ni l’autre : laisser tel quel)
Version simple
Création d’un fichier fil-ariane.php à placer dans votre thème
<div class="fildariane"> <?php // Breadcrumb navigation if (!is_front_page()) { echo '<span class="icon"><i class="fa fa-compass" aria-hidden="true"></i></span><a title="Accueil" rel="nofollow" href="'; echo get_option('home'); echo '">'; echo 'Accueil'; echo "</a><span class='icon'><i class='fa fa-angle-right' aria-hidden='true'></i></span>"; global $post; if (is_single()){ // dans le cas où vous avez Woocommerce ou un custom post type (choisir l'un ou l'autre pas les deux ensembles) mais laisser ces lignes actives $nom_post_lowercase = 'product'; // pour woocommerce ou alors changer par le nom de votre custom post type $nom_custom_categorie_replaced = 'product_cat'; // pour woocommerce ou alors changer par le nom de la catégorie de votre custom post type switch($post->post_type){ case 'post' : $postcat = get_the_category( $post->ID ); $term_id = $postcat[0]->term_id; echo get_term_parents_list( $term_id, 'category', array( 'separator' => '<span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span>' ) ); break; case $nom_post_lowercase : // Ajouter ce cas pour le traitement de notre post type $postcat = get_the_terms($post->ID, $nom_custom_categorie_replaced); //recuperations des termes de la custon catégorie $term_id = $postcat[0]->term_id; echo get_term_parents_list( $term_id, $nom_custom_categorie_replaced, array( 'separator' => '<span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span>' ) ); break; } echo the_title(); } if (is_category()) { $query_obj = get_queried_object(); $term_id = $query_obj->term_id; $taxonomy = get_taxonomy( $query_obj->taxonomy ); if ( $term_id && $taxonomy ) { $parents = get_term_parents_list( $term_id, $taxonomy->name, array( 'inclusive' => false, 'separator' => '<span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span>' ) ); } echo $parents.''.$query_obj->name; } if (is_archive() && !is_category() && !is_post_type_archive()) {// affichage des postes d'un terme de notre custom catégorie $query_obj = get_queried_object(); $term_id = $query_obj->term_id; $taxonomy = get_taxonomy( $query_obj->taxonomy ); if ( $term_id && $taxonomy ) { $parents = get_term_parents_list( $term_id, $taxonomy->name, array( 'inclusive' => false, 'separator' => '<span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span>' ) ); } if($parents){ single_cat_title($parents); }else{ single_cat_title(); } } if (is_post_type_archive()) { post_type_archive_title(); } if (is_home()) { single_post_title(); } if (is_page() && !is_single()) { $ancestors = get_post_ancestors($post); if ($ancestors) { $ancestors = array_reverse($ancestors); foreach ($ancestors as $crumb) { echo '<a href="' . get_permalink($crumb) . '">' . get_the_title($crumb) . '</a><span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span> '; } } echo the_title(); } if (is_search()) { echo sprintf( __( '%s Search Results for ', 'emandarine' ), $wp_query->found_posts ); echo sprintf( __('"', 'emandarine' ), $wp_query->found_posts ); echo get_search_query().'"'; } } echo '</nav>'; ?> </div>
Intégration dans votre thème php
<?php get_template_part('fil-ariane') ?>
Version plus compliquée
Ou dans functions.php
//Variables globales pour changer en une fois tous les noms de votre custom Post Type et catégories pour CPT $nom_custom_post_type = 'CustomPost'; //peut être changé $nom_custom_categorie = 'cptcategorie'; //peut être changé // le fil d'Ariane function the_breadcrumb() { echo '<nav class="fildariane" aria-label="Breadcrumb">'; if (!is_front_page()) { echo '<span class="icon"><i class="fa fa-compass" aria-hidden="true"></i></span><a title="Accueil" rel="nofollow" href="'; echo get_option('home'); echo '">'; echo 'Accueil'; echo "</a><span class='icon'><i class='fa fa-angle-right' aria-hidden='true'></i></span>"; if (is_single()){ global $post; global $nom_custom_post_type; global $nom_custom_categorie; $nom_post_replaced = str_replace(" ", "", $nom_custom_post_type); $nom_post_lowercase = strtolower($nom_post_replaced); $nom_custom_categorie_replaced = str_replace(" ", "", $nom_custom_categorie); switch($post->post_type){ case 'post' : $postcat = get_the_category( $post->ID ); $term_id = $postcat[0]->term_id; echo get_term_parents_list( $term_id, 'category', array( 'separator' => '<span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span>' ) ); break; case $nom_post_lowercase : // Ajouter ce cas pour le traitement de notre post type $postcat = get_the_terms($post->ID, $nom_custom_categorie_replaced); //recuperations des termes de la custon catégorie $term_id = $postcat[0]->term_id; echo get_term_parents_list( $term_id, $nom_custom_categorie_replaced, array( 'separator' => '<span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span>' ) ); break; } echo the_title(); } if (is_category()) { $query_obj = get_queried_object(); $term_id = $query_obj->term_id; $taxonomy = get_taxonomy( $query_obj->taxonomy ); if ( $term_id && $taxonomy ) { $parents = get_term_parents_list( $term_id, $taxonomy->name, array( 'inclusive' => false, 'separator' => '<span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span>' ) ); } echo $parents.''.$query_obj->name; } if (is_archive() && !is_category() && !is_post_type_archive()) {// affichage des postes d'un terme de notre custom catégorie $query_obj = get_queried_object(); $term_id = $query_obj->term_id; $taxonomy = get_taxonomy( $query_obj->taxonomy ); if ( $term_id && $taxonomy ) { $parents = get_term_parents_list( $term_id, $taxonomy->name, array( 'inclusive' => false, 'separator' => '<span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span>' ) ); } if($parents){ single_cat_title($parents); }else{ single_cat_title(); } } if (is_post_type_archive()) { post_type_archive_title(); } if (is_home()) { single_post_title(); } if (is_page()) { $ancestors = get_post_ancestors($post); if ($ancestors) { $ancestors = array_reverse($ancestors); foreach ($ancestors as $crumb) { echo '<a href="' . get_permalink($crumb) . '">' . get_the_title($crumb) . '</a><span class="icon"><i class="fa fa-angle-right" aria-hidden="true"></i></span> '; } } echo the_title(); } if (is_search()) { echo sprintf( __( '%s Search Results for ', 'emandarine' ), $wp_query->found_posts ); echo sprintf( __('"', 'emandarine' ), $wp_query->found_posts ); echo get_search_query().'"'; } } echo '</nav>'; }
Dans votre thème php
<?php echo the_breadcrumb() ?>