Dans un thème WordPress, il se peut que vous vouliez afficher les sous-pages d’une page mère. Ca, vous savez certainement le faire avec wp_list_pages().
Mais cette fonction vous permet seulement d’afficher la liste avec un lien vers les pages. Qu’en est-il si vous voulez afficher le contenu de ces sous-pages ?
Avec la fonction get_posts()
Cette fontion prend un tableau pour argument. Commencez donc par définir ce tableau :
$parentid = $post->ID; // on récupère l'id de la page courante soit la page parente $args = array( 'post_type' => 'page', 'numberposts' => -1, // -1 signifie toutes les sous-pages 'post_parent' => $parentid // numéro de la page parente );
Ensuite, affectez à une variable le résultat de la fonction get_posts($args) qui retourne elle même un tableau.
$posts = get_posts($args);
Parcourez le tableau avec foreach. La fonction setup_postdata($post); va vous permettre d’utiliser les template tags que vous utilisez habituellement dans la boucle (the loop).
<?php foreach ($posts as $post) :
setup_postdata($post); ?>
<div class="entry">
<h2><?php the_title(); ?></h2>
<?php the_content() ; ?>
</div>
<?php endforeach; ?>
Avec la fonction get_pages()
$parentid = $post->ID;
$pages = get_pages('child_of='.$parentid);
foreach($pages as $page) :
setup_postdata($page); ?>
<h2><?php the_title();?></h2>
<div class="entry"><?php echo the_content(); ?></div>
<?php endforeach; ?>

9 octobre 2009 à 3:37
Bonjour
Astuce sympathique et très utile, par contre je rencontre un soucis avec le titre car à chaque sous-page il m’affiche systématiquement le titre de la page principale ?…
Comment faire ?
5 décembre 2010 à 12:16
Thanks for sharing this! Looks great:)