使用wp_list_ages在子页面和孙子页面上显示孙子页面

时间:2014-06-27 作者:gstricklind

在3层的层次页面上,我想在子页面和孙子页面(但不在父页面)上显示孙子。到目前为止,我已经在子页面上显示了孙子,但我不知道如何让他们显示在孙子页面上。我该怎么做?

         <?php
            //display children\'s child pages
            $childrens_children = wp_list_pages(\'title_li=&child_of=\'.$post->ID.\'&echo=0\');

            if ( is_page() && $post->post_parent > 0 ) { 
            ?>
            <aside id="child-child-pages" class="widget widget_child_child_pages">
                <ul> 
                    <?php echo $childrens_children; ?>
                </ul>
            </aside>
        <?php } ?> 
The idea

父级:不显示任何内容

子项:显示父项的孙辈

孙辈:显示父辈的孙辈

1 个回复
SO网友:Howdy_McGee

所以,如果我有这个直截了当的话:

IF 我们当前正在查看顶级页面THEN 不显示任何内容

IF 我们当前正在查看子页面THEN 显示孙辈

IF 我们当前正在查看孙子页面THEN 显示孙辈

如果上述逻辑正确,我们可以使用如下内容:

$id = get_ancestor(); // Hold Top Most Page ID

<?php if($post->post_parent != 0) : /** IF we\'re NOT on a Top Level Page **/ ?>
    <ul>
        <?php 
            $parentID = ($post->post_parent == $id) ? $post->ID : $post->post_parent;
            wp_list_pages("child_of=$parentID&depth=1"); 
        ?>
    </ul>
<?php endif; ?>
把这个放进你的functions.php 文件,这是一个函数,它将返回我们最顶层的页面ID。

/** Get Top Most Page ID and Return it **/
function get_ancestor(){
    global $post;
    $id = 0;

    if(is_object($post)){
        $id = $post->ID;

        if($post->post_parent){
            $ancestors = get_post_ancestors($post->ID);
            $root = count($ancestors)-1;
            $id = $ancestors[$root];
        }
    } 
    else if(is_singular(\'post\') || is_archive() || (is_home() && !is_front_page())){
        $id = get_option(\'page_for_posts\');
    }

    return $id;
}

结束

相关推荐