我在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] 在小部件中,但它只显示子页面,但我希望子页面包含父页面
最合适的回答,由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()将父标题设置为链接。