如何在WordPress中显示带有父页面的子页面列表?

时间:2014-07-09 作者:Arshad Hussain

我在WordPress中有以下子页格式:

About Us 
  -Services 
  -Products 
  -Surgery 
我想列出所有具有如上所述父页面的子页面,但我使用的代码

从…起wpbeginner site 不符合我的要求。有人能告诉我吗

如何使用父页面显示子页面。

我在函数中尝试了以下代码。php文件:

function wpb_list_child_pages() {
    global $post;
    if ( is_page() && $post->post_parent ) {
        $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->post_parent . \'&echo=0\' );
    } else {
        $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->ID . \'&echo=0\' );
    }
    if ( $childpages ) {
        $string = \'<ul>\' . $childpages . \'</ul>\';
    }

    return $string;
}    
add_shortcode( \'wpb_childpages\', \'wpb_list_child_pages\' );
然后使用短代码[wpb_childpages] 在小部件中,但它只显示子页面,但我希望子页面包含父页面

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

您使用的代码仅获取父页的子级。它首先检查您所在的页面。如果您在子页面中,它将使用父ID打印其子页面。如果您在父页面中,那么它只会使用post ID查找子页面。无论哪种情况,它都不会打印实际的父页面。我编辑了代码,以便打印父级。如果您在子页面中,它将使用get\\u the\\u title()获取父页面,如果您在父页面中,那么您在$post对象中已经有了该信息。看看这是否适合你。

function wpb_list_child_pages() {
    global $post;
    $parent = "";
    if ( is_page() && $post->post_parent ) {
        $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->post_parent . \'&echo=0\' );
        $parent =  get_the_title($post->post_parent);
    } else {
        $childpages = wp_list_pages( \'sort_column=menu_order&title_li=&child_of=\' . $post->ID . \'&echo=0\' );

        $parent = $post->post_title;
    }
    if ( $childpages ) {
        $string = \'<ul><li>\' . $parent . \';
        $string .= \'<ul>\' . $childpages . \'</ul>\';
        $string .= \'</li></ul>\';
    }

    return $string;
}    
add_shortcode( \'wpb_childpages\', \'wpb_list_child_pages\' );
或者,也可以使用get\\u permalink()将父标题设置为链接。

结束

相关推荐

How to add taxonomy in menus?

书籍(自定义帖子类型)小说(税)科学(税)历史(税)--书籍体裁(税务)小说(术语)科学(学期)历史(学期)以下哪一项是做这件事的“好方法”?对于前一个(这是我目前在管理菜单中的功能,我为每个功能都提供了“register\\u taxonomy”功能),我无法选择要在菜单中显示的“Tax”。而对于后者,我可以将它们添加到菜单中,只需要一个“register\\u taxonomy”函数。