Cheatsheet

Ajouter un fil d'ariane

Laisser un commentaire

Le fil d’Ariane, ou breadcrumb permet à l’internaute de se repérer dans le site et de facilement remonter aux niveaux hiérarchiques supérieurs. Il présente en outre une vraie plus-value SEO car il renforce le maillage interne et présente un vue hiérarchique aux moteurs de recherche.

Le breadcrumb n’est pas une fonctionnalité native de Wordpress, cependant, il est facile de l’ajouter. De façon native, on utilisera le code suivant.

function the_breadcrumb() {
    global $post;

    if (!is_home()) {
        echo '<a href="/">Home</a>';

        if (is_category() || is_single()) {
            echo ' / ';
            $cats = get_the_category($post->ID);

            foreach ($cats as $cat) {
                echo $cat->cat_name;
                echo ' / ';
            }

            if (is_single()) the_title();
        }

        elseif (is_page()) {
            if ($post->post_parent) {
                $anc = get_post_ancestors($post->ID);
                $anc_link = get_page_link($post->post_parent);

                foreach ($anc as $ancestor) {
                    $output = ' / <a href="' . $anc_link . '">"' . get_the_title($ancestor) . '"</a> / ';
                }

                echo $output;
                the_title();
            }

            else {
                echo ' / ';
                echo the_title();
            }
        }
    }

    elseif (is_tag()) single_tag_title();
    elseif (is_day()) echo 'Archive: '; the_time('F jS, Y');
    elseif (is_month()) echo 'Archive: '; the_time('F, Y');
    elseif (is_year()) echo 'Archive: '; the_time('Y');
    elseif (is_author()) echo 'Archive de l’auteur: ';
    elseif (isset($_GET['paged']) && !empty($_GET['paged'])) echo 'Blogarchive: ';
    elseif (is_search()) echo 'Résultats pour la recherche : ';
}

Enfin, dans les templates de page où vous voulez afficher le breadcrumb, vous n’avez plus qu’à appeler la fonction the_breadcrumb().

Le plus souvent, j’utilise sur mes sites le plugin SEOPress afin d’améliorer leur référencement. Le fil d’ariane est une fonction nativement présente dans ce plugin.

Pour l’utiliser, vous pouvez invoquer la fonction seopress_display_breadcrumbs() directement dans vos templates. Vous pouvez également au préalable vous assurer de son existence : cela vous permettra de ne pas avoir d’erreur si le plugin est désactivé.

<?php if (function_exists('seopress_display_breadcrumbs')) { seopress_display_breadcrumbs(); } ?>

Alternativement, vous pouvez aussi l’inclure en invoquant le shortcode [seopress_breadcrumbs]. Par ailleurs, sachez qu’il est possible de customiser le comportement du breadcrump de SEOPress.

Voici quelques ajustements que j’utilise chez MTO.

// Personalisation du markup du fil
add_filter('seopress_pro_breadcrumbs_html', function ($html) {
    return str_replace('<nav aria-label', '<nav class="breadcrumbs container" aria-label', $html);
});

// Suppression de "tous les produits" du fil d'ariane
add_filter('seopress_pro_breadcrumbs_crumbs', function ($crumbs) {
    // $crumbs is a multidimensional array.
    // First array: key=position, second array: 0=>page title, 1=>URL
    if (is_product()) unset($crumbs[1]);
    return $crumbs;
});

// Suppression du CSS (si on veut le styliser à notre sauce via le CSS du thème)
add_action('seopress_pro_breadcrumbs_css', '__return_false');

Enfin, dans le cas où vous souhaitez désactiver les styles, vous pouvez également le faire via Asset Cleanup.

Commentaires

Rejoignez la discussion !

Vous pouvez utiliser Markdown pour les liens [ancre de lien](url), la mise en *italique* et en **gras**. Enfin pour le code, vous pouvez utiliser la syntaxe `inline` et la syntaxe bloc

```
ceci est un bloc
de code
```