WP_LIST_PAGES获取当前页面的空洞层次结构

时间:2019-07-18 作者:fefe

例如,具有以下页面层次结构

Page1
 - SubPage1_1
 - SubPage1_2
 -- SubSubPage1_2_1

Page2
 - SubPage2_1
 - SubPage2_2
 -- SubSubPage2_2_1
例如,请求SubSubPage1_2_1 我怎样才能适应wp_list_pages 孔层次结构?预期结果

Page1
     - SubPage1_1
     - SubPage1_2
     -- SubSubPage1_2_1
我一直在尝试以下方法

global $post;

if(!$post->post_parent){
    // will display the subpages of this top level page
    $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
}
else{

    if($post->ancestors) {
        // now you can get the the top ID of this page
        // wp is putting the ids DESC, thats why the top level ID is the last one

        $ancestors = get_post_ancestors($post);
        $children = wp_list_pages("title_li=&child_of=".implode($ancestors, \',\')."&echo=0");
    }
}
但在我的情况下,没有输出期望的结果

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

您可以这样做:

if ( ! $post->post_parent ) {
    $pages = get_pages( \'child_of=\' . $post->ID );
    $pages = $pages ? wp_list_pluck( $pages, \'ID\' ) : \'\';
    $includes = $post->ID . ( $pages ? \',\' . implode( \',\', $pages ) : \'\' );
    $children = wp_list_pages( \'title_li=&include=\' . $includes . \'&echo=0\' );
} else {
    $pages = get_post_ancestors( $post );
    $includes = $post->ID . \',\' . implode( \',\', $pages );
    $children = wp_list_pages( \'title_li=&include=\' . $includes . \'&echo=0\' );
}
echo $children ? "<ul>$children</ul>" : \'\';
一、 e.使用include 参数

对于顶级页面(post_parent0), $children = wp_list_pages( \'title_li=&child_of=\' . $post->ID . \'&echo=0\' ); 也可以,但不包括父标记(LI) 除非手动添加它。我更喜欢有标记/LI 生成人wp_list_pages().

相关推荐

对“Pages”仪表板中的列进行排序概述

我想按“标题”或自定义列(“层次结构”)在“页面”仪表板中按字母顺序排列页面。基本上,所有页面都分配了一个层次代码(1、1.1、1.1.01、1.1.02等)。当我单击“层次”排序按钮时,结果不正确。有人能给我一个提示或给我指出讨论这个问题的资源吗?下面列出了我的代码。// (Works.) Make custom columns \'prod-hierar\' and \'slug\' sortable add_filter( \'manage_edit-page_sortable_column