Ma question concerne l'affichage des parents et des frères et soeurs de la page actuelle.
Si je suis au niveau 2 page, je voudrais montrer aux frères et sœurs sans leurs enfants. Si je suis au niveau 3 page, je voudrais montrer frères, frères et sœurs.
Par exemple, si j'avais des niveaux de page comme celui-ci:
Animaux (niveau 1)
- Poisson (niveau 2)
- Saumon (niveau 3)
-- Truite
- Brochet
- Mammifères
-- Chiens
-- Chats
Les plantes
Si je suis sur la page Poisson, j'aimerais montrer aux frères et sœurs:
Poisson
Mammifères
Si je suis sur la page Saumon, je voudrais montrer aux frères et sœurs, aux parents et aux parents:
Poisson
- Saumon
- Truite
- Brochet
Mammifères
Mon code actuel ressemble à ceci:
<?php
if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0&sort_column=menu_order");
else $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0&sort_column=menu_order");
if ($children) { ?>
<ul><?php echo $children; ?></ul>
<?php } ?>
En l'état actuel, votre code fonctionne presque, mais il vérifie si la page actuelle a un parent, ce qui sera toujours vrai pour les pages de 2e et de 3e niveau.
WordPress nous donne get_ancestors pour récupérer un tableau ordonné d'ancêtres pour tout type d'objet hiérarchique:
get_ancestors( $object_id, $object_type );
Nous pouvons donc utiliser get_ancestors( $post->ID, 'page' )
et compter les éléments pour nous aider à obtenir la profondeur appropriée pour votre navigation.
if($post->post_parent) {
$ancestors = get_ancestors( $post->ID, 'page' );
if ( 1 == count( $ancestors ) ) {
echo '<ul>';
wp_list_pages(
array (
'title_li' => '',
'sort_column' => 'menu_order',
'child_of' => $ancestors[0],
'depth' => 1
)
);
echo '</ul>';
}
if ( 2 == count( $ancestors ) ) {
echo '<ul>';
wp_list_pages(
array (
'title_li' => '',
'sort_column' => 'menu_order',
'child_of' => $ancestors[1],
'depth' => 2
)
);
echo '</ul>';
}
}
Vous pourriez être plus intelligent avec la logique, en supprimant le dernier élément du tableau ancêtre par exemple, mais je l'ai gardé détaillé pour plus de clarté.