[Résolu] Mon fil d’ariane n’affiche pas le parent d’une page

  • WordPress :4.8.2
  • Statut : résolu
7 sujets de 1 à 7 (sur un total de 7)
  • Auteur
    Messages
  • #1927516

    Samimosa
    Participant
    Initié WordPress
    4 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : Nginx
    • Thème utilisé : Cequoia Custom
    • Extensions en place : Yoast SEO (mais non utilisé)
    • Nom de l’hébergeur : OVH
    • Adresse du site : http://www.cequoia.fr

    Problème(s) rencontré(s) : Bonjour à tous, j’ai un petit soucis avec le fil d’ariane de mon site. Pour vous faire un petit récapitulatif le fil d’ariane a été codé en php (nous n’utilisons pas l’extension Yoast SEO). Les pages sur le site cequoia sont catégorisées en trois type : « post », « services », et « fournisseurs ».

    Ce qui est assez drôle c’est que le fil d’ariane affiche le parent direct sur les pages de type « post » (il suffit d’aller sur l’article dans le blog pour s’en rendre compte) et sur les pages « fournisseurs » mais en aucun cas sur les pages « services ». Ce qui est un peu embêtant sachant que ce sont les pages principales…

    Le code en question :

    function custom_breadcrumbs() {
    // Settings
    
        $separator          = '|';
        $breadcrums_id      = 'breadcrumbs';
        $breadcrums_class   = 'breadcrumbs';
        $home_title         = 'Accueil';
        $excluded           = array("projets", "credits");
    
        // If you have any custom post types with custom taxonomies, put the taxonomy name below (e.g. product_cat)
        $custom_taxonomy  = 'services';
    
        // Get the query & post information
        global $post,$wp_query;
    
        // Do not display on the homepage
        if ( !is_front_page() && !is_account_page() && !in_array($post->post_name, $excluded)) {
    
            // Build the breadcrums
            echo '<ul id="' . $breadcrums_id . '" class="' . $breadcrums_class . '">';
    
            // Home page
            echo '<li class="item-home"><a class="bread-link bread-home" href="' . get_home_url() . '" title="' . $home_title . '">' . $home_title . '</a></li>';
            echo '<li class="separator separator-home"> ' . $separator . ' </li>';
    
            if ( is_archive() && !is_tax() && !is_category() && !is_tag() ) {
    
                echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . post_type_archive_title($prefix, false) . '</strong></li>';
    
            } else if ( is_archive() && is_tax() && !is_category() && !is_tag() ) {
    
                // If post is a custom post type
                $post_type = get_post_type();
                // If it is a custom post type display name and link
                if($post_type != 'post' && !is_archive()) {
    
                    $post_type_object = get_post_type_object($post_type);
                    $post_type_archive = get_post_type_archive_link($post_type);
    
                    echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . $post_type_archive . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
                    echo '<li class="separator"> ' . $separator . ' </li>';
    
                } else if (is_archive()) {
                    $post_type_object = get_post_type_object($post_type);
                    $post_type_archive = get_post_type_archive_link($post_type);
    
                    echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . get_home_url() . '/blog/' . '" title="Blog">' . 'Blog</a></li>';
                    echo '<li class="separator"> ' . $separator . ' </li>';
                }
    
                $custom_tax_name = get_queried_object()->name;
                echo '<li class="item-current item-archive"><strong class="bread-current bread-archive">' . $custom_tax_name . '</strong></li>';
    
            } else if ( is_single() ) {
    
                // If post is a custom post type
                $post_type = get_post_type();
    
                // If it is a custom post type display name and link
                if($post_type != 'post') {
    
                    $post_type_object = get_post_type_object($post_type);
                    $post_type_archive = get_post_type_archive_link($post_type);
    
                    echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . $post_type_archive . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
                    echo '<li class="separator"> ' . $separator . ' </li>';
    
                }
                else {
                    echo '<li class="item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . get_home_url() . '/blog/' . '" title="Blog">' . 'Blog</a></li>';
                    echo '<li class="separator"> ' . $separator . ' </li>';
                }
    
                // Get post category info
                // $category = get_the_category();
    
                // if(!empty($category)) {
    
                //  // Get last category post is in
                //  $last_category = end(array_values($category));
    
                //  // Get parent any categories and create array
                //  $get_cat_parents = rtrim(get_category_parents($last_category->term_id, true, ','),',');
                //  $cat_parents = explode(',',$get_cat_parents);
    
                //  // Loop through parent categories and store in variable $cat_display
                //  // $cat_display = '';
                //  // foreach($cat_parents as $parents) {
                //  //  $cat_display .= '<li class="item-cat">'.$parents.'</li>';
                //  //  $cat_display .= '<li class="separator"> ' . $separator . ' </li>';
                //  // }
    
                // }
    
                // If it's a custom post type within a custom taxonomy
                // $taxonomy_exists = taxonomy_exists($custom_taxonomy);
                // if(empty($last_category) && !empty($custom_taxonomy) && $taxonomy_exists) {
    
                //  $taxonomy_terms = get_the_terms( $post->ID, $custom_taxonomy );
                //  $cat_id     = $taxonomy_terms[0]->term_id;
                //  $cat_nicename  = $taxonomy_terms[0]->slug;
                //  $cat_link    = get_term_link($taxonomy_terms[0]->term_id, $custom_taxonomy);
                //  $cat_name    = $taxonomy_terms[0]->name;
    
                // }
    
                // Check if the post is in a category
                if(!empty($last_category)) {
                    echo $cat_display;
                    echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
    
                // Else if post is in a custom taxonomy
                } else if(!empty($cat_id)) {
    
                    echo '<li class="item-cat item-cat-' . $cat_id . ' item-cat-' . $cat_nicename . '"><a class="bread-cat bread-cat-' . $cat_id . ' bread-cat-' . $cat_nicename . '" href="' . $cat_link . '" title="' . $cat_name . '">' . $cat_name . '</a></li>';
                    echo '<li class="separator"> ' . $separator . ' </li>';
                    echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
    
                } else {
    
                    echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '" title="' . get_the_title() . '">' . get_the_title() . '</strong></li>';
    
                }
    
            } else if ( is_category() ) {
    
                // Category page
                echo '<li class="item-current item-cat"><strong class="bread-current bread-cat">' . single_cat_title('', false) . '</strong></li>';
    
            } else if ( is_page() && !is_account_page() ) {
    
                // Standard page
                if( $post->post_parent ){
    
                    // If child page, get parents
                    $anc = get_post_ancestors( $post->ID );
    
                    // Get parents in the right order
                    $anc = array_reverse($anc);
    
                    // Parent page loop
                    if ( !isset( $parents ) ) $parents = null;
                    foreach ( $anc as $ancestor ) {
                        $parents .= '<li class="item-parent item-parent-' . $ancestor . '"><a class="bread-parent bread-parent-' . $ancestor . '" href="' . get_permalink($ancestor) . '" title="' . get_the_title($ancestor) . '">' . get_the_title($ancestor) . '</a></li>';
                        $parents .= '<li class="separator separator-' . $ancestor . '"> ' . $separator . ' </li>';
                    }
    
                    // Display parent pages
                    //echo $parents;
    
                    // Current page
                    echo '<li class="item-current item-' . $post->ID . '"><strong title="' . get_the_title() . '"> ' . get_the_title() . '</strong></li>';
    
                } else {
    
                    // Just display current page if not parents
                    echo '<li class="item-current item-' . $post->ID . '"><strong class="bread-current bread-' . $post->ID . '"> ' . get_the_title() . '</strong></li>';
    Breadcrumbs

    Si vous avez une astuce ? En vous remerciant d’avance 🙂

    #1928359

    yrdna
    Participant
    Chevalier WordPress
    142 contributions

    « services »  est-ce une catégorie comme « fournisseurs  » ?  D’après le code du fil d’ariane « services » serait une taxonomie. Et le code permettant d’afficher la taxonomie est commenté dans votre code (de la ligne 96 à 105)

    Est-il possible d’avoir des impressions d’écrans de l’administration ou on verrait les menus de gauche pour « services » et « fournisseurs »afin de déterminer si nous avons à faire à une taxonomie d’un custom post type.

    #1930998

    Samimosa
    Participant
    Initié WordPress
    4 contributions

    « services » correspond en fait à la section « pages » standard de WordPress. « post » étant lié au contenu rédigé sur la section « guides » et « fournisseurs » sur la section « fournisseur » que vous pouvez voir en PJ.

    Bien à vous 🙂

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #1931264

    yrdna
    Participant
    Chevalier WordPress
    142 contributions

    j’ai testé rapidement  votre fil d’ariane en prenant le code complet de celui ici -> https://www.thewebtaylor.com/articles/wordpress-creating-breadcrumbs-without-a-plugin

    Pour les pages, le parent n’est pas visible dans le fil d’ariane car que cette partie echo $parents; est commentée.

     // Display parent pages
    echo $parents;

    • Cette réponse a été modifiée le il y a 1 semaine par  yrdna.
    #1931328

    Samimosa
    Participant
    Initié WordPress
    4 contributions

    Merci pour votre réponse 🙂

    Il me suffit donc d’enlever le commentaire ?

    Bien à vous ?

    #1931431

    yrdna
    Participant
    Chevalier WordPress
    142 contributions

    Il faut dé-commenter $parents et tester l’affichage d’une sous page

    • Cette réponse a été modifiée le il y a 1 semaine par  yrdna.
    #1931453

    Samimosa
    Participant
    Initié WordPress
    4 contributions

    @yrdna c’est parfait ! Tout fonctionne, juste un petit ajustement à faire sur les pages en les sous-catégorisant manuellement mais je te remercie énormément !

7 sujets de 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.