在父页面上列出所有子页面,在子页面上列出子页面,而不是当前页面?

时间:2012-10-01 作者:mathiregister

我有以下函数列出一个页面的所有子页面。

function show_subpages() {

    global $post;
    $subpages = wp_list_pages( array(
        \'echo\'          =>0,
        \'title_li\'      =>\'\',
        \'depth\'         =>2,
        \'link_before\'   => \'— \',
        \'child_of\'      => ( $post->post_parent == 0 ? $post->ID : $post->post_parent)
    ));
    if ( !empty($subpages) ) {
        echo \'<ul id="subpages" class="wrapper">\';
        echo $subpages;
        echo \'</ul>\';
    }
}
所以当我在parent-page 我看到一个包含所有子页面的列表。如果我在child-page 我看到了与父页面对应的所有子页面的相同列表。

— My Parent Page
   — My Child Page Nr. 1
   — My Child Page Nr. 2
   — My Child Page Nr. 3
这几乎就是我想要的!我只需要添加一点,就是从子页面列表中删除我所在的“当前”页面。

想象一下我在My Child Page Nr. 2 我只想列出My Child Page Nr. 1My Child Page Nr. 3 但不是“2号”,因为我现在在这一个。

有没有办法添加这个?

提前谢谢你。

1 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

function show_subpages() {

    global $post;
    $subpages = wp_list_pages( array(
        \'echo\'          =>0,
        \'title_li\'      =>\'\',
        \'depth\'         =>2,
        \'link_before\'   => \'&mdash; \',
        \'child_of\'      => ( $post->post_parent == 0 ? $post->ID : $post->post_parent),
        \'exclude\'       => ( $post->post_parent == 0 ? \'\' : $post->ID)
    ));
    if ( !empty($subpages) ) {
        echo \'<ul id="subpages" class="wrapper">\';
        echo $subpages;
        echo \'</ul>\';
    }
}
wp_list_pages 支持exclude 参数在上面,我简单地添加了\'exclude\' => ( $post->post_parent == 0 ? \'\' : $post->ID) 到参数数组
其工作方式类似于您已经在向child_of:
如果帖子没有父项,则我们将订阅exclude 空字符串。如果它有一个,我们会给它提供当前的帖子ID。

结束

相关推荐

Latest posts on all pages

我想在我的所有页面上都有“最新”的框。我怎样才能解决这个问题?现在它在主页上工作,在另一个页面上只显示一个框,但内容与它所在的页面相同。 <!--LATEST POSTS--> <div class=\"center\"> <?php if (is_page() ) { ?> <?php if(of_get_option(\'latstpst_checkbox\') == \"1\"){ ?><?php get_t