web-dev-qa-db-fra.com

Comment afficher la liste des pages enfants de la page parent dans wordpress?

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.

2
Arshad Hussain

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

2
Zammuuz

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');
0
Mike