J'ai le format de menu suivant.
Treatment
-Beauty
--Services
--Products
-Surgery
-washing
J'ai suivi le lien suivant: Comment afficher une liste de pages enfants pour une page parent dans WordPress
Mais je ne veux pas de sous-pages de la page "Beauté". Je veux seulement "Traitement" Sous-pages.
Ajoutez ce code à votre functions.php. Une explication du code est donnée ci-dessous.
function wpb_list_child_pages() {
global $post;
if ( is_page() && $post->post_parent )
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' .$post->post_parent . '&echo=0' );
else
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $childpages ) {
$string = '<ul>' . $childpages . '</ul>';
}
return $string;
}
add_shortcode('wpb_childpages', 'wpb_list_child_pages');
Explication
Le code vérifie si une page a un parent ou si la page elle-même est un parent. S'il s'agit d'une page parent, les pages enfants qui lui sont associées sont affichées. S'il s'agit d'une page enfant, toutes les autres pages enfants de sa page parent sont affichées. Enfin, s'il ne s'agit que d'une page sans page parent ou enfant, le code ne fera tout simplement rien. Il suffit donc d’ajouter ce shortcode [wpb_childpages]
à la page où seront affichées les pages enfants.
Mise à jour pour arrêter au premier niveau
if ( is_page() && $post->post_parent )
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0&depth=1' );
else
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0&depth=1' );
Ma sortie de test qui a fonctionné chez mon hôte local:
Test1
-t1
--tt1
-t2
et la sortie qui s'affiche lorsque j'ai écrit ce shortcode dans la page Test1 est:
t1
t2
Si vous ne voulez que des sous-pages de la page actuelle, utilisez ceci:
function wpb_list_child_pages() {
global $post;
if ( is_page() && $post->ID )
$childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0&depth=2' );
if ( $childpages ) {
$string = '<ul>' . $childpages . '</ul>';
}
return $string;
}
add_shortcode('wpb_childpages', 'wpb_list_child_pages');