WordPress Menu déroulant wp_list_pages

janvier 20, 2010 · Posté dans WordPress   ·  Imprimer cet Article Imprimer cet Article

Comment inclure automatiquement certaines pages pour votre menu dans WordPress.

En règle générale on utilise la fonction suivante:

echo '<ul>';
echo wp_list_pages('include=1,3,4&title_li=&echo=0');
echo '</ul>';

Le problème avec l’option include, est que WordPress n’inclus que les id renseignés et aucune autre pages. Ce qui peut être très gênant vous souhaitez faire un menu à plusieurs niveaux.

Voici donc la solution pour contourner le problème,
au lieu de partir sur une fonction très complexe nous allons prendre le problème à l’inverse, nous ne cherchons pas à inclure mais à exclure, car dans ce cas là WordPress ajoute bien les enfants
si les options sont bien renseignées.

Solution:

// les ID de page à inclure
$includes = array(1,3,4,5,7);
// les exclusions
$excludes = array();
// on récupère toutes les pages du premier niveau
$pages_toplevel = get_pages('child_of=0');
// on itère la liste pour renseigner les exclusions
foreach ($pages_toplevel as $page) {
 // si l'ID n'est pas une page à inclure
 if (!in_array($page->ID, $includes)) {
 $excludes[] = $page->ID;
 }
}
echo '<ul>';
echo wp_list_pages('exclude=' . implode(',', $excludes) . '&title_li=&echo=0');
echo '</ul>';

Et voilà tout simplement…

Partager:
  • Facebook
  • Google Bookmarks
  • viadeo FR
  • Twitter
  • Yahoo! Buzz
  • Live
  • email
  • PDF
  • RSS
  • MySpace
  • LinkedIn