Speak English? Click here to read my English blog!

Une fonction breadcrumb pour Wordpress

Posté par jbj le 26 avr 2008 dans Wordpress12 commentaires

Par défaut, Wordpress ne propose pas de fonction pour afficher un breadcrumb. (appellé aussi fil d’ariane où chemin de fer en Français) Nous allons voir ensemble comment créer cette fonction, afin d’afficher le fil sous la forme Home » Categorie » Article.

Le breadcrumb, toute une histoire…

Wikipedia nous renseigne parfaitement sur le breadcrumb:

En ergonomie — et plus particulièrement de nos jours dans le domaine de la conception d’interfaces informatiques — un fil d’Ariane, aussi appelé chemin de fer (et en anglais, breadcrumbs, par allusion aux miettes de pain utilisées par le Petit Poucet ainsi que Hansel et Gretel) est une aide à la navigation sous forme de signalisation de la localisation du lecteur dans un document (très souvent, une page d’un site web).

Une fonction breadcrumb pour Wordpress

Fonctionnement

Une fois de plus, les tags conditionnels de Wordpress vont nous être particulièrement utiles. Grâce à eux, nous pouvons déterminer facilement et avec certitude si la page affichée par le visiteur est un article, une page, une archive de catégorie…

Il nous restera ensuite à utiliser les fonctions adéquates pour afficher le chemin. Pas de difficultés là non plus, Wordpress étant déja doté de tout ce qu’il faut pour récupérer les liens vers la home, les articles et les pages.

J’ai préféré écrire une fonction propre plutôt que de vous inciter à copier-coller à l’arrache une petite dizaine de lignes dans le code de votre thème.
Copiez la fonction the_breadcrumb() dans le fichier functions.php de votre thème:

function the_breadcrumb() {
	if (!is_home()) {
		echo '<a href="';
		echo get_option('home');
		echo '">';
		bloginfo('name');
		echo "</a> &raquo; ";
		if (is_category() || is_single()) {
			the_category('title_li=');
			if (is_single()) {
				echo " &raquo; ";
				the_title();
			}
		} elseif (is_page()) {
			echo the_title();
		}
	}
}

Désormais, pour afficher le breadcrumb, il ne vous reste plus qu’à éditer les fichiers archive.php, single.php et page.php.
Collez-y l’appel à la fonction là ou vous souhaiter voir le fil apparaitre:

<?php the_breadcrumb(); ?>

Et voilà, vous venez de doter votre blog d’un fil qui permettra à vos visiteurs de s’y retrouver et de revenir facilement sur vos pages de catégories.
A noter, ce code pourrais facilement être amélioré: On pourrait par exemple limiter l’affichage des catégories et n’en faire apparaitre qu’une seule.

Quand à ceux qui préfèreront installer un plugin au lieu d’éditer leur thème, Breadcrumb NavXT devrait largement combler leur attentes.

Si vous avez aimé cet article, aidez-moi à le promouvoir en votant pour lui sur les sites suivants: Ces icones representent les sites de bookmarking social dans lesquels vos lecteurs peuvent partager et faire découvrir vos pages.
  • del.icio.us
  • Scoopeo
  • Tapemoi
  • Technorati
  • Tutmarks
  • Pioche
  • Blogasty
  • Diggons
  • Wikio
Tags: ,

12 commentaires

» Flux RSS des commentaires
  1. Une fonction breadcrumb pour Wordpress…

    Par défaut, Wordpress ne propose pas de fonction pour afficher un breadcrumb. (appellé aussi fil d’ariane où chemin de fer en Français) Nous allons voir ensemble comment créer cette fonction, afin d’afficher le fil sous la forme Home » Catego…

  2. [...] lien vers la nouvelle | vu sur scoopeo [...]

  3. Excellent moyen de navigation simple et facile à mettre en place.

    Néanmoins, lorsque je le met en place, il rend (une fois sur les articles seuls) les menus latéraux ainsi qu’une bannière d’angle… invisibles. Du coup l’internaute ne peu plus sortir de l’article ou il se trouve.

  4. Ouais, je viens de voir ça sur ton blog, c’est assez étrange car je n’ai pas eu ce problème lorsque j’ai testé sur mon thème…
    Il faudrais faire des essais, je remarque en affichant la source de la page qu’il manque une partie du code htm, ce qui explique que ta sidebar ne s’affiche pas.

  5. Je vais jeter un oeil sur le code.
    Peut-être une balise mal fermée.

    Merci de ta réactivité ;)

  6. Superbe “function” ! Bravo !!

    Gael - Rédacteur pour http://www.danger-sante.org/

  7. A la place des “�” ca n’aurait pas été mieux de mettre des “>” ?

    C’est possible de le faire en modifiant le code, si oui quoi ?

    Merci d’avance!

  8. Désolé, en effet c’était plus que simple…
    Je trouve la réponse à ma question en 30s :

    function the_breadcrumb() {
    if (!is_home()) {
    echo ‘‘;
    bloginfo(’name’);
    echo “
    > “;
    if (is_category() || is_single()) {
    the_category(’title_li=’);
    if (is_single()) {
    echo ” > “;
    the_title();
    }
    } elseif (is_page()) {
    echo the_title();
    }
    }
    }

  9. En fait, les “?” dont tu parles sont l’effet d’un copié-collé, à la base (Je dit à la base car le code merdouille un peu à cause de l’éditeur de Wordpress) il s’agissait de l’entité html &raquo;, qui te fait ce sign là: »
    Je le trouvais un peu plus classe que le >, dommage qu’il ne soit pas super bien passé dans l’éditeur :(

  10. Et hop, problème réglé ;)
    Merci à toi pour ta vigilance!

  11. Petit bug, si un article se trouve dans 2 catégories

    Du type : Titreblog > CATEGORY1itle_li= CATEGORY2 > Titrearticle

    Un “title_li= ” vient squatter!

  12. Bien vu, j’avais oublié de tester avec deux catégories…Je corrige ça et vous tient au courant :)

Commenter