web-dev-qa-db-fra.com

Comment obtenir toutes les pages enfants dans leur page parent?

<?php

$args = array(
    'post_type'      => 'page',
    'posts_per_page' => -1,
    'post_parent'    => $post->ID,
    'order'          => 'ASC',
    'orderby'        => 'menu_order'
 );


$parent = new WP_Query( $args );

if ( $parent->have_posts() ) : ?>

    <?php while ( $parent->have_posts() ) : $parent->the_post(); ?>

        <div id="parent-<?php the_ID(); ?>" class="parent-page">

            <h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>

            <p><?php // the_advanced_excerpt(); ?></p>

        </div>

    <?php endwhile; ?>

<?php endif; wp_reset_query(); ?>

Ceci est mon code. Il devrait afficher le titre de toutes les pages enfants de toute page parent. Malheureusement, toutes les pages du site Web sont affichées, y compris l’enfant de la même page et d’autres.

Des suggestions à ce sujet?

1
Mithun Nath

Vous devez utiliser cet attribut dans le tableau $ args pour obtenir les enfants d'une page spécifique par Parent ID

'child_of' => 20,

Plus d'informations: https://codex.wordpress.org/Function_Reference/get_pages

1
Abdullah Alemadi

Je viens de l'utiliser dans un site! Qu'en est-il quelque chose comme ça:

function rt_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('list-childpages', 'rt_list_child_pages');

Le code ci-dessus vérifie d'abord 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. Dans la dernière ligne du code, j'ai ajouté un shortcode afin que vous puissiez facilement afficher des pages enfants sans modifier vos modèles de page.

Pour afficher les pages enfants, ajoutez simplement le code court suivant dans un widget de page ou de texte dans la barre latérale:

[rt-childpages]

ou vous pouvez ajouter la fonction

rt_list_child_pages()

à n'importe quel modèle de page.

0
rudtek