Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Coupe WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Comment afficher une liste de pages enfants pour une page parent dans WordPress

Récemment, un de nos lecteurs nous a demandé comment afficher les pages enfants d’une page WordPress ?

Si vous organisez votre site WordPress avec des pages parents et des pages enfants, vous souhaiterez peut-être afficher vos pages enfants ou sous-pages sur la page parentale principale. Vous pouvez également afficher la page principale sur chaque page secondaire pour faciliter la navigation.

Dans cet article, nous allons vous afficher comment afficher facilement une liste de pages enfants pour une page parent dans WordPress.

Displaying a list of child pages for a parent page in WordPress

Quand faut-il afficher une liste de pages enfants ?

WordPress propose deux types de publication par défaut : les articles et les pages. Les publications sont le contenu du blog et sont généralement organisées en catégories et identifiées.

Les pages sont des contenus ponctuels ou autonomes qui se renouvellent en permanence, comme la page « À propos » ou la page « Contact », par exemple.

Dans WordPress, les pages peuvent être hiérarchisées, ce qui signifie que vous pouvez les organiser avec des pages parents et des pages enfants.

Par exemple, vous pouvez créer une page Produit avec des pages enfants pour les fonctionnalités, les prix et le support.

Pour créer une page enfant, suivez notre guide sur la création d’une page enfant dans WordPress.

Après avoir créé vos pages parents et enfants, vous souhaiterez peut-être répertorier les pages enfants sur la page parentale principale.

Pour ce faire, il suffit de modifier manuellement la page parente et d’ajouter une liste de liens individuellement.

Manually add child page links

Cependant, vous devrez modifier manuellement la page parent à chaque fois que vous ajouterez ou supprimerez une page enfant. Ne serait-il pas plus agréable de pouvoir créer une page enfant et de la faire apparaître automatiquement comme un lien sur la page parent ?

Ceci étant dit, voyons quelques autres façons dynamiques d’afficher rapidement une liste de pages enfants sur la page parent dans WordPress. Nous allons vous afficher trois méthodes, afin que vous puissiez choisir celle qui vous convient le mieux :

Méthode 1. Afficher les pages enfants sur la page parent à l’aide d’une extension

Cette méthode est plus simple et recommandée pour toutes les utilisatrices/utilisateurs.

Tout d’abord, vous devez installer et activer l’extension Page-list. Pour plus de détails, consultez notre guide étape par étape sur l’installation d’une extension WordPress.

Une fois activé, vous devez modifier la page parent et simplement ajouter le code court suivant à l’endroit où vous souhaitez afficher la liste des pages enfants.

[sous-pages]

Vous pouvez maintenant enregistrer votre page et la prévisualiser dans un nouvel onglet du navigateur. Vous remarquerez qu’elle affiche une simple liste à puces de toutes les pages enfants.

Plain list of child page links

Si vous le souhaitez, vous pouvez ajouter des feuilles de style CSS personnalisées pour modifier l’apparence de la liste. Voici un exemple de CSS que vous pouvez utiliser comme point de départ.

ul.page-list.subpages-page-list {
    list-style: none;
    list-style-type: none;
    background-color: #eee;
    border: 1px solid #CCC;
    padding: 20px;
}

Après avoir appliqué votre CSS personnalisé, vous pouvez prévisualiser la page parente. Voici ce que cela donne sur notre site WordPress de test.

Child pages list with CSS

Le plugin fournit un tas de paramètres de code court qui vous permettent de définir la profondeur, les pages exclues, le nombre d’articles, et plus encore. Pour plus de détails, Veuillez consulter la page de l’extension pour une documentation détaillée.

Méthode 2. Lister les pages enfants d’une page parent à l’aide d’un code

Cette méthode est un peu plus avancée et nécessite d’ajouter du code à votre site WordPress. Si vous n’avez jamais fait cela auparavant, veuillez consulter notre guide sur la façon de copier et coller du code dans WordPress.

Pour répertorier les pages enfants sous une page parent, vous devez ajouter le code suivant dans une extension d’extraits de code ou dans le fichier functions.php de votre thème :

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 class="wpb_page_list">' . $childpages . '</ul>';
}
 
return $string;
 
}
 
add_shortcode('wpb_childpages', 'wpb_list_child_pages');

Chez WPBeginner, nous recommandons toujours d’ajouter du code dans WordPress avec l’extension WPCode.

WPCode vous permet d’ajouter facilement du code personnalisé sans modifier les fichiers de votre thème, de sorte que vous n’avez pas à craindre de casser votre site.

WPCode

Tout d’abord, vous devez installer et activer l’extension gratuite WPCode. Pour obtenir des instructions étape par étape, consultez ce guide sur l’installation d’une extension WordPress.

Une fois l’extension activée, accédez à Code Snippets  » Add Snippet depuis votre Tableau de bord WordPress. De là, survolez l’option  » Ajouter votre code personnalisé (nouvel extrait)  » et cliquez sur le bouton  » Utiliser l’extrait « .

Add a new custom code snippet in WPCode

Ensuite, ajoutez un titre à votre extrait et collez le code ci-dessus dans la case « Prévisualisation du code ».

N’oubliez pas de choisir « Extrait de code PHP » comme type de code dans le menu déroulant à droite.

Paste code into WPCode plugin

Ensuite, il suffit de permuter le commutateur de « Inactif » à « Actif » et de cliquer sur le bouton « Enregistrer l’extrait » en haut de la page.

Activate and save your custom code snippet

Ce code 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, elle affiche les pages enfants qui lui sont associées. S’il s’agit d’une page enfant, elle affiche toutes les autres pages enfant de sa page parent.

Dernier point, s’il s’agit simplement d’une page sans page enfant ou parent, alors le code ne fera tout simplement rien. Dans la dernière ligne du code, nous avons ajouté un code court, afin que vous puissiez facilement afficher les pages enfants sans modifier vos modèles de page.

Pour afficher les pages enfants, il suffit d’ajouter le code court suivant dans une page ou un widget de texte dans la colonne latérale :

[wpb_childpages]

N’oubliez pas d’enregistrer vos modifications et de les prévisualiser dans un onglet du navigateur. Voici comment cela apparaît sur notre site de test.

Plain link list

Vous pouvez maintenant personnaliser cette liste de pages à l’aide d’une feuille de style CSS. Voici un exemple de code CSS que vous pouvez utiliser comme point de départ.

ul.wpb_page_list {
    list-style: none;
    list-style-type: none;
    background-color: #eee;
    border: 1px solid #CCC;
    padding: 20px;
}

Méthode 3. Afficher dynamiquement les pages enfant sans aucun code court

L’utilisation de codes courts est pratique, mais le problème avec eux est que vous devrez ajouter des codes courts dans toutes les pages qui ont des pages parents ou enfants.

Vous pouvez vous retrouver avec des codes courts dans de nombreuses pages, et parfois vous pouvez même oublier de l’ajouter.

Une meilleure approche consisterait à modifier le fichier de modèle de page dans votre thème, de manière à ce qu’il puisse afficher automatiquement les pages enfant.

Pour ce faire, vous devez modifier le Modèle de page principale .php, ou créer un modèle de page personnalisé dans votre thème.

Vous pouvez modifier votre thème principal, mais ces modifications disparaîtront si vous changez ou mettez à jour votre thème. C’est pourquoi il serait préférable que vous créiez un thème enfant et que vous fassiez ensuite vos modifications dans le thème enfant.

Dans votre fichier de modèle de page, vous devez ajouter cette ligne de code à l’endroit où vous souhaitez afficher les pages enfants.

<?php wpb_list_child_pages(); ?>

C’est tout. Votre thème détectera désormais automatiquement les pages enfants et les affichera dans une liste simple.

Vous pouvez personnaliser les styles à l’aide de CSS et de mise en forme. Voici un exemple de la façon dont le site OptinMonster affiche la page mère et les pages secondaires :

OptinMonster Sub Pages Example

Nous espérons que cet article vous a aidé à lister les pages enfants pour une page parent dans WordPress. Vous pouvez également consulter notre guide sur les pages les plus importantes à créer sur un nouveau site WordPress, et notre comparaison des meilleurs constructeurs de pages WordPress drag & drop pour créer des mises en page personnalisées sans aucun code.

Si vous avez aimé cet article, veuillez alors vous abonner à notre chaîne YouTube pour obtenir des tutoriels vidéo sur WordPress. Vous pouvez également nous trouver sur Twitter et Facebook.

Divulgation : Notre contenu est soutenu par les lecteurs. Cela signifie que si vous cliquez sur certains de nos liens, nous pouvons gagner une commission. Consultez comment WPBeginner est financé, pourquoi cela compte et comment vous pouvez nous soutenir. Voici notre processus éditorial.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

L'ultime WordPress Toolkit

Accédez GRATUITEMENT à notre boîte à outils - une collection de produits et de ressources liés à WordPress que tous les professionnels devraient avoir !

Reader Interactions

80 commentairesLaisser une réponse

  1. Denise

    For third level pages (grandchild), I want to show the same menu that is seen on the child pages (all the child links of the parent). With this snippet, when on a grandchild page, I only see the other grandchild pages in the menu. How would this code need to be modified to show the all child links even when on grandchild pages?

  2. vicky

    how to get child page ids not the granchild ids…………….pls help im a bigginner

  3. Meredith L

    I’m relatively new to blogging and I recently switched over to the Kale Wordpress theme. I have been trying to do page attribute pages (under the parent page Recipes) so I can have separate categories for appetizers, desserts, etc. Everything seems to go through on the admin part but then on the site itself there are no page attributes/drop down form the Recipes category. What am I doing wrong? It is all set to public so I’m not sure what the problem is.

  4. Daves

    Thank you for this code. But I don’t want this to be shown on the homepage (static page), just on the parent pages only. Please how can it be done?

    Thank you.

  5. Boris Budeck

    I am using Generatepress Theme (created a child theme from it for customizing) and I can’t get this to work. The shortcode is displayed in the output page, it seems it is not even ercognized as being a shortcode. I use Elementor widgets and neither text nor shortcode widgets work.

    Any idea of how to make it work when using elementor widgets?

  6. Frederic

    a great post, it’s exactly what I’m looking for since many hours ! and it works like a charm, just adding the code in the function.php of the theme then adding the short code in the page where I want the sub pages to appear, and voilà!!!
    wonderful, thanks a lot for your generosity !!

  7. Mariano

    Hi!

    Thanks for the code. How can I display the featured image of each child page?

  8. Ron

    Like with so many of the snippets we find, one has to go through all the comments in order to get it to work. What’s wrong with testing what you write?

  9. Alicia

    Can you do a drop down menu for parent/child pages on wordpress.com, or does it have to be the .org version?

  10. Razvan

    What if I want to display child posts, not child pages?

  11. Rudy

    Using this code ends up displaying the parent page along with the child pages, which is redundant. As I understand it, what we really need is to display only the child pages, not the parent page. Any suggested modification that can do this?

  12. Milos

    On plugins update, for some strange reason I always get an error:

    Fatal error: Cannot redeclare wpb_list_child_pages() (previously declared in …/wp-content/themes/pagelines/functions.php:25) in …/wp-content/themes/pagelines/functions.php on line 34

  13. Jeffrey Fry

    How can you also display the date of the child page?

  14. ethann

    Hello great article,
    Can you please help me creating a dropdown of child pages in parent page.I need this functionality for one of my wordpress project and i am totally newbie to wordpress.

  15. Alex

    Am I the only one that cannot get it to work?

    I have the following structure

    About
    — Page 1
    — Page 2
    — Page 3

    When on the « About » or a child page (1, 2 or 3) I would like to have a list with my parent page (About) and all children (1, 2, 3) – Anyone got that working?

    Thanks! :)

    • Kendra

      OMG sorry this is annoying Please ignore my other posts. Didn’t realize you couldn’t paste code into the comments.

      I was NOT able to get it to work with wpb_list_child_pages();

      I WAS able to get it to work with echo do_shortcode( ‘[wpb_childpages]’)

      And to get the title of the parent page, i inserted this above the child page list:
      $current = $post->ID;

      $parent = $post->post_parent;

      $grandparent_get = get_post($parent);

      $grandparent = $grandparent_get->post_parent;

      PHP if ($root_parent = get_the_title($grandparent) !== $root_parent = get_the_title($current)) {echo get_the_title($grandparent); }else {echo get_the_title($parent);

  16. Jean Bishop

    I am using this code and it works great. Is it possible to also display categories in menus along with pages?

  17. Michelle

    Hi,

    I want to do the following

    Parent page must be either for sale and or for rent
    Then I want the child for example a province (gauteng) to link to the for sale and the for rent parent.
    How do I do that?

    Michelle

  18. Zakhar

    How can i create shortcode with param, for example, [wpb_childpages id= »1″], where id= »1″ is an id of parent page?

  19. Strand

    Hi,

    Is it possible to limit the links to a specific number such as maximum 12 child pages?

    Thanks

  20. Aander

    Thank you,

    Could you explain, please, how can I organize child pages in drop down list that would be accessible through the parent page? (I don’t want the visitors could see all child pages in a form of a blogroll.)

    I.e., on the parent page I want to create drop down list (listbox) to which child pages would be added in predefined order (say in alphabetical order). After reading Introduction a visitor can proceed by choosing any page from the list at her wish (child pages has no logical connection so in any case she will search the exact page).

    Is ‘my dream’ realizable?

    Thank you again.

  21. Quantum-mecha

    How do I add pagination for Child Page?

    Thanks!

  22. Astrid

    Hi WPBeginner Staff,

    I used the code you guys provided with the « short code option » and it worked (links to child pages). However, I wanted to use the permanent option, and that didn’t work.

    When I added this line of code [ ] the parent page returns a 500 error and no child pages are displayed at atll.

    What am I doing wrong?

    On a side note if I wanted to display and excerpt with its respective image how would I go about it? Thanks!

    • Astrid

      I was able to figure this out.

      I added the code snippet then added this shortcode [wpb_childpages] to the parent page where I wanted the child pages displayed. Awesome!

      Now in order to display excerpts and an image would I use the same queries– just like posts under a category.

      Thanks in advance :)

      • Jade

        Hey I was wondering what you meant by ‘query’? How exactly did you get the excerpts and images to display in the parent page?

        Thanks!

  23. Pradeep

    Could someone confirm that the example page used in this tutorial http://optinmonster.com/how-it-works/ uses this feature or not? To me it looks like it they are using tabs, instead of child pages.

    If I’m right, could someone direct me to a resource to get that feature, as I’m desperately looking for a fluid solution like the one they have in that page?

    Many thanks,

    Pradeep

  24. Andrew Roberts

    For the non-shortcode option, you might want to let users know they need to either change
    return $string; to
    echo $string; or
    in their page template echo out the function
    echo page_list_child_pages();

    Thanks to Erik for pointing this out above

    • Gaby

      Thank you! I was wondering why the code wouldn’t work…

  25. Howard

    Hi, I can get this to work when I am visiting my domain with a subdirectory (e.g – example.com/home) but when viewing the site without this (example.com) the list of sub pages is not listed. Can anyone point me as to where I am going wrong?

    Thanks in advance – very new to Wordpress.

  26. Emily Jennewein

    How do you get this function to display the parent page itself at the top of the list along with the list of child and grandchild pages? On the child pages it does not list the parent page.

  27. Michael

    how can i customized this to just display the child page of a specific page?

  28. Yester

    How do u add a active class on the current ?

  29. Jenny

    Is there now a plugin that can do same ?

    and also can we decide where the box with submenus pages will go in any are of the page not just top of page? Using a plugin

  30. WPBeginner Staff

    Yes it can be used for custom post types. Like this:


    function wpb_list_child_pages() {

    global $post;

    if ( 'movie' == get_post_type() && $post->post_parent )

    $childpages = wp_list_pages( 'post_type=movie&sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
    else
    $childpages = wp_list_pages( 'post_type=movie&sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );

    if ( $childpages ) {

    $string = '' . $childpages . '';
    }

    return $string;

    }

    add_shortcode('wpb_childpages', 'wpb_list_child_pages');

  31. Daniela

    This is great! Is there a way to do the same for Custom Post Types that have child posts?

    • Caroline

      Also wondering!

      If anyone knows, please help!

  32. dpc

    Is there a way to modify this in order to print custom post type child posts on a custom post type post page? Thanks, it is very handy!

  33. Sokeara

    It’s very greate for me! Anyways I would like to know how can I display title and thumbnail of child page to parent page.

    • Ashley Bell

      Hi, I have the same query. I really like how the list is styled on the Beginners Blueprint page but I have no idea how to start. Can someone recommend an article to read or give some advice, thanks.

  34. amitabha197

    There is an error in the pages which are not having child pages so I have slightly modified
    if( count($childpages) != 0 ) {
    $string =  » . $childpages .  »;
    }

    instead of
    if( $childpages ){
    $string =  » . $childpages .  »;
    }

    • Matt Rock

      I couldn’t get the template code « wpb_list_child_pages(); » to work, but echo shortcode did the trick. Cheers!

      • Erik

        Just change the « return $string » to « echo $string » (this will print out the pages).

        • fariha

          thanks, it worked

  35. Coen Siebenheller

    I’ve added the code to the functions.php and when i add the [wpb_childpages] shortcode in side my text it works. But when try to add to one of my templates it doesn’t show a thing. Anybody knows what i’m doing wrong?

  36. Elena Rapisardi

    Great explanation!!
    Is there a way to display always the parent pages?

  37. Quin

    This is brilliant, thanks.

    Is there a way to adapt it so the Parent displays the Grandchild, and not the Child?

  38. Richelly Italo

    The great idea, thanks dude.

  39. Steph

    Can you tell us how to stop the list at the first level? I’d like to show all the subpages of that parent, but not the subpages’ children. Thanks.

    • Stefan

      Just add &depth=1

      sort_column=menu_order&title_li=&child_of=’ . $post->post_parent . ‘&echo=0&depth=1

  40. Martin Capodici

    Great. I love this idea of a site plugin and seeing the code you are adding (so you know it is clean and doesn’t do bad stuff) rather than relying on some plugin that could be installing anything.

    For something as simple as listing child pages I agree it should be part of a larger plugin rather than just one plugin otherwise you end up with so many plugins it is hard to keep track.

  41. Rishi Gangoly

    This is great. I had a page on my website called « Services » and was manually linking the sub-pages, but not any more. Awesome. Thanks for this tip. Worked like a charm and did exactly what I was doing manually. :)

  42. Bojan

    This is great! Putting it in a plugin is great feature and great opportunity to extend functionality by adding:
    – child page featured image (as thumbnail)
    – child Title
    – rest of the meta (author, date, comment count)
    – styling in columns maybe
    and so on

    This way, we would have almost complete Portfolio plugin – portfolios made of Pages rather than just made of custom post types.

    Thank you..

  43. yousef mayeli

    hi there
    thanks it was very useful . but if you could show it by video it was very more useable.as tyler moor would do
    thanks
    yousef

  44. Nancy

    This is great! I have a lot of manually added links to child pages, and this is going to make maintaining our site MUCH easier. I’ve just been testing in my development environment, and I’d like to tweak the function a little bit, so that on a child page, when the shortcode is included, all of the children of the same parent are listed EXCEPT for the currently displayed page. I’m really still learning PHP, so while I’ll be trying to figure this one out on my own, I’d welcome any assistance in making that change to the code.

Laisser une réponse

Merci d'avoir choisi de laisser un commentaire. Veuillez garder à l'esprit que tous les commentaires sont modérés selon notre politique de commentaires, et votre adresse e-mail ne sera PAS publiée. Veuillez NE PAS utiliser de mots-clés dans le champ du nom. Ayons une conversation personnelle et significative.