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.

10
demandé sur sjstrutt 2010-02-24 01:34:19

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
))
23
répondu Richard M 2010-02-24 00:05:25
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.

14
répondu pbond 2012-06-24 16:29:17
<?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.

4
répondu Allan 2010-10-21 21:31:49

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>';
2
répondu squarecandy 2017-04-17 17:54:06