J'essaie de montrer un sous-menu de pages enfants uniquement sur les pages de niveau 2 (qui ont un parent) et s'ils ont des enfants. J'utilise le code ci-dessous (composé de plusieurs extraits que j'ai trouvés), cela fonctionne bien au niveau 1 (ne montre rien de ce qui est censé être), fonctionne bien au niveau 2: s'il y a des pages enfants, elles sont affichées dans le sous-menu. .
Ma question: quand je vais au niveau 3 pages, j'aimerais que le sous-menu reste, mais il disparaît. Comment puis-je changer le code ci-dessous pour le faire fonctionner?
<?php
if (is_page() && $post->post_parent ) { // test to see if the page has a parent
$page = $post->ID;
if (is_page() ) {
$page = $post->post_parent;
}
$children=wp_list_pages( 'echo=0&child_of=' . $page . '&title_li=' );
if ($children) {
$output = wp_list_pages( array(
'child_of' => $post->ID, // Only pages that are children of the current page
'depth' => 1, // Only show one level of hierarchy
'title_li' => ''
) );
}
}
echo $output;
?>
Utilisez ancêtres :
$ancestors = array_reverse( get_post_ancestors( $post->ID ) ); // reverse ancestors to make it more intuitive
if ( isset( $ancestors[0] ) ) {
if ( isset( $ancestors[1] ) ) {
// 3rd tier
$parent_id = $post->post_parent;
} else {
// 2nd tier
$parent_id = $post->ID;
}
$args = array(
'depth' => 1,
'child_of' => $parent_id,
);
wp_list_pages( $args );
}