WordPress : récupérer les catégories parentes de the_category
L'ergonomie est un maître mot pour optimiser un site Internet. Et sur les blogs WordPress, une lacune est souvent présente : la fonction the_category ne renvoie que la catégorie actuelle sans les catégories mères...
Mais un petite astuce permet de contourner ce problème d'ergonomie. Une image d'exemple valant mieux que 100 mots :
Hack pour les catégories mères de The_Category sous WordPress
Affichez les catégories parentes dans WordPress
Sans liens ahref
Pour chaque code, j'ai choisi de séparer chaque élément par le signe ». Libre à vous de le modifier en modifier le code html "»".
Juste les catégories parentes :
foreach((get_the_category()) as $childcat) {
$parentcat = $childcat->category_parent;
if( $parentcat != 0 ) echo '' .get_cat_name($parentcat) .' » ';
} ?>
Avec la catégorie actuelle :
foreach((get_the_category()) as $childcat) {
$parentcat = $childcat->category_parent;
if( $parentcat != 0 ) echo '' .get_cat_name($parentcat) .' » ';}
the_category(',') ?>
Avec liens ahref
Juste les catégories parentes :
foreach((get_the_category()) as $childcat) {
$parentcat = $childcat->category_parent;
if( $parentcat != 0 ) echo '<a class="external" href="' . get_category_link($parentcat) .'">' .get_cat_name($parentcat) .'</a> » ';}
?>
Avec la catégorie actuelle :
foreach((get_the_category()) as $childcat) {
$parentcat = $childcat->category_parent;
if( $parentcat != 0 ) echo '<a class="external" href="' . get_category_link($parentcat) .'">' .get_cat_name($parentcat) .'</a> » ';}
the_category(',');
?>
Pourquoi afficher les catégories mères?
Indiquez au visiteur où il est
Simple, efficace et pratique, ce code permet de retrouver le béaba de l'ergonomie web : dire à vos visiteurs où ils se trouvent et là où ils vont aller. Un exemple concret sur SeoMix :
J'ai une catégorie Wordpress, qui contient une sous catégorie référencement. Si je n'affiche que la sous catégorie, j'induis partiellement en erreur mes visiteurs qui pourraient croire que cet article de référencement s'applique à tous les sites, et non pas seulement à WordPress. Ou encore cette sous-catégorie hack et fonctions, où le même problème apparaîtrait.
Un peu de référencement WordPress
Le second avantage du premier hack (celui sans les liens a href) est le référencement naturel de votre blog. Si vous dupliquer un lien dans une même page, vous diluez et perdez de la popularité : Google s'arrête en effet au premier lien trouvé sans prendre en compte les suivants, ce qui dilue la "puissance" donnée à chaque lien.
Ne pas mettre de lien dans ce chemin de navigation d'articles permet donc de ne pas dupliquer vos liens entre le bloc d'articles, votre menu et/ou votre sidebar, tout en donnant un vrai plus à vos visiteurs.
Source : Creating the parent category (WordPress Support forum)
N'hésitez pas à donner votre avis sur ce petit hack.
Voici les thématiques abordées par WordPress : récupérer les catégories parentes de the_category:

7 commentaires sur WordPress : récupérer les catégories parentes de the_category
Crunch - Le 17 août 2010 à 1 h 27 min
Vraiment sympa cette astuce, je prend !
Par contre tu parles d’éviter de mettre plusieurs fois le même lien pour éviter la duplication mais aussi la perte de poids mais en regardant bien, cette catégorie (ici thèmes) est présente 3 fois dans la page : dans le header (logique), dans le plan de site (logique aussi) mais elle y est aussi dans le début de l’article donc je pense que tu devrais utiliser la méthode sans ahref pour la catégorie enfant comme tu le fais pour la mère, fin jdis ça, jdis rien ;)
Daniel Roch - Le 17 août 2010 à 9 h 32 min
Les cordonniers sont toujours les plus mals chaussés… J’ai encore quelques optimisations à faire ici et là. ;)
CamT - Le 7 septembre 2010 à 23 h 48 min
Super mais je l’ajoute dans quelle page le code ?
Daniel Roch - Le 8 septembre 2010 à 10 h 09 min
@CamT : il s’ajoute là où il y a besoin. Moi par exemple, je l’ai ajouté dans le fichier single.php, dans le haut de l’article. Tout dépend de ton thème et de ton site.
edouard - Le 24 octobre 2010 à 2 h 56 min
Bonjour,
C’est très cool ce post mais en l’utilisant j’ai jugé bon d’ajouter une ligne pour ne pas avoir une répétition de la catégorie mère (en cas de plusieurs sous-catégories);, que voici:
$tmp[] = $parentcat;Et une vérification de cette ligne comme ceci:
!in_array($parentcat, $tmp)Et voici ce que ça donne ;)
NOTE: peut être que je me trompe ^^. en tout cas re-merci :)
Daniel Roch - Le 24 octobre 2010 à 14 h 19 min
j’avoue que mes article sont toujours placés dans une seule catégorie, donc je n’avais jamais envisagé ton cas de figure. Merci beaucoup pour le partage de ton code. :)
tibeoh - Le 2 janvier 2011 à 20 h 23 min
Super astuce ! Je l’ai ajouté sur mon site tonvoyage.fr !
Merci beaucoup !
Il me manque juste l’astuce pour ajouter le nom de l’article affiché !