WordPress, Affichez les sous pages d’une page

Publié le 27 janvier 2010 par Myrmex

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