Lister les pages enfants

Lister les pages enfants

 

Voici un bout de code permettant sur son site wordpress d’afficher les pages enfants d’une page principale.Cet exemple et particulier et spécifique à un projet de site privé sur lequel j’ai du travailler : sur ce site privé, un mot de passe permet l’accès à un groupe de page (page parente et ses pages enfants) .

Mon client veut constamment le meme type de menu (memes intitulés) sur chaque groupe de page, donc l’utilisateur pense qu’il s’agit d’un seul et meme menu, or il s’agit plutot d’une fonction affichant la page parente et ses pages enfants, quelque soit le groupe de page ou l’on se trouve.

<nav class="clearfix" role="navigation">   



<ul>
<li><?php $post->post_parent;$parent_link = get_permalink($post->post_parent);
echo '<a href="' . $parent_link. '">Consultez les photos de classe</a>';?>
</li>
<li>
<?php
global $post;
if ( is_page() && $post->post_parent )
$enfants = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );
else
$enfants = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' );
if ( $enfants ) {
echo '<ul class="secondary">';
echo $enfants;
echo '</ul>';}?>
</li>
</ul>


</nav>

Ici je crée un menu, avec toujours en dur la page parente intitulée ‘consultez vos photos de classe’.Dans le backoffice, quelque soit le titre de la page parente, en front ca sera toujours ‘consultez vos photos de classe’.

Ensuite avec la condition

if ( is_page() && $post->post_parent )

on vérifie qu’on est bien sur une page parente, puis avec la fonction wp_list_page et ses arguments, on affiche les pages enfants:

 $enfants = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' );

Ensuite à soi de styliser tout ca en css pour donner une apparence de menu, plutot qu’une liste

meu page

En l’etat, par rapport à ce projet spécifique, le client veut également que les titres des pages enfants soient toujours les memes, qu’il n’aie pas à les taper dans le backoffice.

Pour cela il existe un filtre pour modifier le titre des articles ou pages.Reportez vous à cet article.