我正在尝试仅在第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;
?>
最合适的回答,由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 );
}