所以我想做的是:我想开发一个主题,显示父页面上的任何子页面。我通过一个WP\\u查询和一个简单的循环成功地运行了它:
<!--show sub pages on this page-->
<?php $childargs = array( \'post_parent\' => $post->ID, \'post_type\' => \'page\', \'posts_per_page\' => \'-1\', \'orderby\' => \'menu_order\', \'order\' => \'ASC\' );
$child = new WP_Query($childargs);
// only show the navbar on pages with sub-children
if ($child->have_posts()) { ?>
<div class="sub">
<div class="pw">
<?php if ($child->have_posts()) : while ($child->have_posts()) : $child->the_post(); ?>
<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
<?php endwhile; endif;
wp_reset_query(); ?>
</div>
</div><!--sub-->
<?php } ?>
这段代码在子页面本身上完全不显示任何内容,这是正确的行为。我想让子页面显示这个导航,但我不知道怎么做$childargs引用postid,对于子页面,postid将是子页面(它自己没有子页面)。
如何修改此代码,使其不仅显示在父页面上,还显示在子页面上?可以在此处找到演示页面:http://sheepish-lab637.com/one/about/ 有自己的子代。
编辑:也许Wordpress菜单可以更好地实现这一点,它还具有捆绑默认的current\\u page\\u item类等优点。
谢谢
最合适的回答,由SO网友:Milo 整理而成
如果是子页面post_parent
将是非零值,因此您可以检查:
if( 0 == $post->post_parent ){
// no parent, get children of this page
$childargs[\'post_parent\'] = $post->ID;
} else {
// has parent, get children of parent page
$childargs[\'post_parent\'] = $post->post_parent;
}
这是假设您的子页面仅比父页面低一个级别。否则,您可以使用
get_post_ancestors
, 并获取最高级别父级的ID:
$parents = get_post_ancestors( $post->ID );
$top_level_page = $parents[ count($parents) - 1 ];