Créer une Query des pages enfant de la page actuelle sous WordPress

Posté par PUShAUNE le 3 novembre 2022

0 commentaires :(

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

Tu kiffes ? Alors partage avec tes potes !

Sois pas timide, lâche tes com’ !

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.