WordPress Menu déroulant wp_list_pages
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…


