Comment puis-je récupérer une liste des pages sœurs D'une page Wordpress?
je suis en train d'essayer de créer une liste de pages sœurs (pas de messages) dans WordPress pour peupler la barre latérale d'une page. Le code que j'ai écrit avec succès renvoie le titre du parent d'une page.
<?php
$parent_title = get_the_title($post->post_parent);
echo $parent_title; ?>
si je comprends bien, vous avez besoin de l'id d'une page (plutôt que du titre) pour retrouver les frères et sœurs d'une page (via wp_list_pages). Comment puis-je obtenir la carte d'identité du parent de la page?
les autres approches sont les bienvenues. Le but est d'énumérer les frères et sœurs d'une page, pas nécessairement juste récupérer le parent de l'id.
4 réponses
$post->post_parent
est de vous donner l'ID parent, $post->ID
l'ID de la page. Voici donc la liste des frères et sœurs d'une page:
wp_list_pages(array(
'child_of' => $post->post_parent,
'exclude' => $post->ID
))
wp_list_pages(array(
'child_of' => $post->post_parent,
'exclude' => $post->ID,
'depth' => 1
));
la bonne réponse, car les deux autres réponses n'affichent pas exclusivement les frères et sœurs.
<?php if($post->post_parent): ?>
<?php $children = wp_list_pages('title_li=&child_of='.$post->post_parent.'&echo=0'); ?>
<?php else: ?>
<?php $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0'); ?>
<?php endif; ?>
<?php if ($children) { ?>
<ul class="subpage-list">
<?php echo $children; ?>
</ul>
<?php } ?>
N'utilisez pas le paramètre exclure, ciblez simplement cela .current_page_item à se différencier.
certaines des réponses sur cette page ont des informations légèrement périmées. À savoir,exclude
ne semble plus nécessaire avec child_of
.
Voici ma solution:
// if this is a child page of another page,
// get the parent so we can show only the siblings
if ($post->post_parent) $parent = $post->post_parent;
// otherwise use the current post ID, which will show child pages instead
else $parent = $post->ID;
// wp_list_pages only outputs <li> elements, don't for get to add a <ul>
echo '<ul class="page-button-nav">';
wp_list_pages(array(
'child_of'=>$parent,
'sort_column'=>'menu_order', // sort by menu order to enable custom sorting
'title_li'=> '', // get rid of the annoying top level "Pages" title element
));
echo '</ul>';