我正在尝试在WordPress中创建一个兄弟页面列表(而不是帖子)来填充页面的侧边栏。我写的代码成功返回页面的父级标题。
<?php
$parent_title = get_the_title($post->post_parent);
echo $parent_title; ?>
据我所知,你需要一个页面的id(而不是标题)来检索一个页面的兄弟(通过wp_list_pages)。如何获取页面的父级ID?
欢迎使用替代方法。目标是列出一个页面的兄弟姐妹,而不仅仅是检索父母的id。
答案 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>';