Je me suis amusé avec les fonctionnalités du menu de Wordpress (wp_nav_menu et wp_list_pages) pour créer un menu pour mon site. Ça avance, mais j'ai toujours du mal à adopter le comportement que je voudrais.
Ce que j'aimerais, c'est quelque chose comme le menu de la barre latérale de ce site Web (pas WP): http://www.fairfood.org/facts/sustainability-agenda/
Lorsque vous cliquez sur une sous-page comportant des enfants, le menu les affiche: http://www.fairfood.org/facts/production-chains/
J'ai actuellement ce code:
<?php // sidebar menu
if ($post->post_parent) {
$ancestors=get_post_ancestors($post->ID);
$root=count($ancestors)-1;
$parent = $ancestors[$root];
} else {
$parent = $post->ID;
}
$children = wp_list_pages("title_li=&child_of=". $parent ."&echo=0");
if ($children) { ?>
<ul id="subnav">
<?php echo $children; ?>
</ul>
<?php } ?>
Cela fonctionne, mais cela montre aux enfants que toutes les sous-pages ont, pas seulement les enfants de la page en cours. Un exemple de ce que je veux dire: http://test.fairfood.org/facts/
Avez-vous une idée pour faire ce travail?
Si cela ne vous dérange pas d'utiliser un plugin, je peux vous dire comment j'ai réussi à faire fonctionner cela par le passé.
function get_root_parent ($ page_id) { global $ wpdb; $ parent = $ wpdb-> get_var ("SELECT post_parent FROM $ wpdb-> messages WHERE post_type = 'page' AND ID = '$ page_id '"); if ($ parent == 0) retourne $ page_id; sinon return get_root_parent ($ parent); }
<? php $ GLOBALS ["parentId"] = get_root_parent ($ post-> ID); ?>
<ul> <? php $ thispage = $ wp_query-> post; if ($ thispage-> post_parent! = 0) { wswwpx_fold_page_list ("sort_column = menu_order & child_of =". $ GLOBALS ["parentId"]. "& title_li = & amp; child_of =". $ thispage-> post_parent); } { w. "sort_column = menu_order & child_of =". $ GLOBALS ["parentId"]. "& title_li = & amp; child_of =". $ thispage-> ID); }?> </ ul>