Vous voulez lister toutes les sous-page d’une page parent ? Ce snippet est fait pour vous !
Il peut vous arriver de vouloir lister sur une page toutes ses pages enfants (ou sous-pages).
Même si je vous conseille pour cela d’utiliser un Custom Post Type, il peut être possible de se retrouver dans une situation où l’usage des pages est imposé.
La première des choses va être de créer les arguments de notre Query :
<?php
$args = array(
'post_type' => 'page',
'posts_per_page' => -1,
'post_parent' => $post->ID,
'order' => 'ASC',
'orderby' => 'menu_order'
); ?>
On va ensuite vérifier que notre page a effectivement des sous-pages, puis lancer la Query :
<?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() ) :
while ( $parent->have_posts() ) : $parent->the_post(); ?>
<?php endwhile;
endif; wp_reset_postdata(); ?>
Enfin, vous pouvez y mettre ce que vous voulez. Pour l’exemple, j’y affiche :
- le titre de la page
- un champ ACF
- un lien vers la page
<?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() ) :
while ( $parent->have_posts() ) : $parent->the_post(); ?>
<div class="ma_sous_page">
<h3>
<?php the_title(); ?>
</h3>
<?php the_field('mon_acf'); ?>
<a href="<?php the_permalink(); ?>">
Lorem ipsum
</a>
</div><!-- .ma_sous_page -->
<?php endwhile;
endif; wp_reset_postdata(); ?>
See ya’ space integrateur