测试页面是否为子页面并且具有子页面,如果是,则子页面也在孙子页面上

时间:2013-05-07 作者:xarai

我正在尝试仅在第2级页面(有家长的页面)和有孩子的页面上显示子页面的子菜单。我正在使用下面的代码(由我找到的几个代码片段组成),它在级别1上运行良好(没有显示任何应有的内容),在级别2上运行良好:如果有子页面,它们将显示在子菜单中。

我的问题是:当我进入3级页面时,我希望子菜单保持不变,但它消失了。如何更改下面的代码以使其正常工作?

    <?php 
        if (is_page() && $post->post_parent ) { // test to see if the page has a parent

          $page = $post->ID;

          if (is_page() ) {
            $page = $post->post_parent;
          }

          $children=wp_list_pages( \'echo=0&child_of=\' . $page . \'&title_li=\' );


          if ($children) {
            $output = wp_list_pages( array(
                \'child_of\' => $post->ID, // Only pages that are children of the current page
                \'depth\' => 1, // Only show one level of hierarchy
                \'title_li\' => \'\'
            ) );
          }


        } 

echo $output; 

?>

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

Use ancestors:

$ancestors = array_reverse( get_post_ancestors( $post->ID ) ); // reverse ancestors to make it more intuitive

if ( isset( $ancestors[0] ) ) {

    if ( isset( $ancestors[1] ) ) {
        // 3rd tier
        $parent_id = $post->post_parent;
    } else {
        // 2nd tier
        $parent_id = $post->ID;
    }

    $args = array(
        \'depth\' => 1,
        \'child_of\' => $parent_id,
    );

    wp_list_pages( $args );
}
结束

相关推荐

WPML in custom page templates

我有一个Wordpress网站,使用WPML从丹斯克翻译成英语。在其中,我有一个页面,它使用自定义页面模板来显示所有帖子的标题。遗憾的是,它两次显示所有帖子:原文和译文。这是我的代码:<ul id=\"archive-list\"> <?php $args = array( \'lang\' => ICL_LANGUAGE_CODE, \'numberposts\' => \'-1\',