WordPress est mon moteur de blog/CMS chouchou et la majorité de mes sites personnels et professionnels sont propulsés par ce script. Dernièrement, un client souhaitait un affichage couramment rencontré sur les sites « vitrines » : en cliquant sur un menu « parent », il faut afficher tous les sous menus liés. Et si aucun sous menu n’existe, on affiche…. rien !
Toutefois, ne souhaitant pas ajouter un énième plugin, j’ai préféré gérer « à la mano » cette option. Alors, après un petit tour dans le Codex WordPress, voici une petite solution qui pourra peut être vous rendre des services.
Tout d’abord, dans le « header.php », vous afficherez les menus :
<?php wp_list_pages('depth=1&sort_column=menu_order&title_li='); ?>
Ici, grâce à « depth=1 », on n’affiche que le « menu parent ». Les « sous menus » ne sont pas affichés.
Et dans le fichier « sidebar.php », il suffit d’ajoutez le code suivant :
<ul> <?php if($post->post_parent) $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0"); if ($children) { ?> <ul> <li><h2>Sous Menus</h2> </li> <?php echo $children; ?> </ul> <?php } ?> </ul>
Rien de bien méchant en fait… et WordPress se transforme en un véritable CMS…
Site Internet : Free Tools
Licence : Gratuit
Pas mal. ^^
merci.
Bonjour,
je n’arrive pas à afficher le nom des sous pages… J’ai insérer le code mais ça ne fonctionne pas… Est ce que quelqu’un pourrait m’expliquer le code du sidebar svp.
Merci d’avance.
Merci beaucoup ca fonctionne parfaitement pour moi mais je rencontre un gros probleme 🙂
En effet, le code fait appraitre les liens de « pages filles » dans la sidebar mais aussi les liens de « pages filles » des pages filles… je m’explique … exemple, lorsqu’on a un menu à 3 niveau comme celui-ci :
Page principale
Page fille 1 (page fille de « page principale »)
Page fille 2 (page fille de « page principale »)
page fille 3 (page fille de « page fille 2 »)
alors, lorsque je suis sur la page fille 2, le code fais apparaitre dans la sidebar
les liens de la page fille 1 et de la page fille 3 …
alors que je ne voudrai dans ma sidebar QUE la page fille 3
Si l’auteur de ce post peut m’aider ce serait cool 🙂
frédéric /
Mais du coup tu peux pas leur attribuer de css ?
Moi en tout cas j’ai pas réussi si tu avais un bon plan..