如果当前页面是最深级别的子页面,我会创建一个显示同级页面的侧边栏,如果不是,则只显示子页面。就我而言,我还没有找到完成它的逻辑。有任何想法吗?提前谢谢。
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 ) {
$interior_sidebar = '<ul class="child-pages">' . $childpages . '</ul>';
}
答案 0 :(得分:0)
Use wp_list_pages() with your parameters to get children of current post. If it comes back empty then display wp_list_pages() of current post's parent; if not empty display what was returned.
答案 1 :(得分:0)
你走在正确的轨道上。
global $post
使用起来不安全(它可能是除您正在查看的页面之外的帖子),尤其是在侧边栏中 - 我建议您这样做类似于get_queried_item()。
而且,为了简单起见,我不建议多次调用wp_list_pages
,而是建议在每个条件中设置参数,然后在最后进行一次wp_list_pages
调用。
// safer method to get the page you are viewing
$post = get_queried_object();
// will be TRUE if there's any child pages, FALSE if not
$has_children = (0 != get_pages( [ 'child_of' => $post->ID ] ) );
// set to prevent notices
$child_pages = FALSE;
if ( is_page( $post->ID ) && $post->post_parent ) {
$args = [
'sort_column' => 'menu_order',
'title_li' => '',
'echo' => 0,
// this is a ternary operation, that assigns $post->ID if $has_children, or $post_parent if not
'child_of' => ( $has_children ) ? $post->ID : $post->post_parent
];
$childpages = wp_list_pages( $args );
}
if ( $childpages ) {
$interior_sidebar = '<ul class="child-pages">' . $childpages . '</ul>';
}
注意:我已使用速记版本进行数组声明(例如,[ 'child_of' => $post->ID ]
而不是array( 'child_of' => $post->ID )
- 这适用于PHP版本5.4+ - 如果您需要在旧版本的PHP上,升级 - 它不再受支持
答案 2 :(得分:0)
解决:
function wpb_list_child_pages() {
global $post;
$childpages = wp_list_pages(array(
'child_of' => $post->ID,
'depth' => 1,
'echo' => '0',
'sort_column' => 'menu_order',
'title_li' => ''
));
if ( $childpages ) {
$string =$childpages;
} else {
$childpages = wp_list_pages(array(
'child_of' => $post->post_parent,
'depth' => 1,
'exclude' => $post->ID,
'title_li' => ''
));
$string = $childpages;
}
echo $string; }
然后我在模板中调用了该函数:<ul class="child-pages"><?php wpb_list_child_pages(); ?></ul>