如何检索Wordpress页面的兄弟页面列表?

时间:2010-02-23 22:34:19

标签: wordpress wordpress-theming

我正在尝试在WordPress中创建一个兄弟页面列表(而不是帖子)来填充页面的侧边栏。我写的代码成功返回页面的父级标题。

<?php
$parent_title = get_the_title($post->post_parent);
echo $parent_title; ?>

据我所知,你需要一个页面的id(而不是标题)来检索一个页面的兄弟(通过wp_list_pages)。如何获取页面的父级ID?

欢迎使用替代方法。目标是列出一个页面的兄弟姐妹,而不仅仅是检索父母的id。

4 个答案:

答案 0 :(得分:25)

$post->post_parent正在为您提供父ID,$post->ID会为您提供当前的网页ID。因此,以下将列出页面的兄弟姐妹:

wp_list_pages(array(
    'child_of' => $post->post_parent,
    'exclude' => $post->ID
))

答案 1 :(得分:15)

wp_list_pages(array(
    'child_of' => $post->post_parent,
    'exclude' => $post->ID,
    'depth' => 1
));

正确答案,因为其他答案并不专门显示兄弟姐妹。

答案 2 :(得分:4)

<?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 } ?>

请勿使用exclude参数,只需定位.current_page_item即可区分。

答案 3 :(得分:4)

此页面上的部分答案略有过时的信息。也就是说,使用exclude时似乎不再需要child_of

这是我的解决方案:

// 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>';