子页面和父页面的子页面列表

时间:2019-01-29 作者:reigns1989

我有一个名为“带子服务”的父页面,每个服务子页面中都有子页面。

在第一级子页面上,我想在中显示它下面的所有页面。当我点击其中一个页面时,我希望显示相同的菜单,所有页面都与我显示的页面级别相同。

我目前有以下代码:

    global $post;
$subpages = wp_list_pages( array(
    \'echo\'=>0,
    \'title_li\'=>\'\',
    \'depth\'=>1,
    \'child_of\'=> ( $post->post_parent == 0 ? $post->ID : $post->post_parent)
));
if ( !empty($subpages) ) {
?>
<div class="services-sub-menu"> 
<?php
    if ( $post->post_parent != 0 ) {
        echo \'<p class="parent-link"><a href="\'. get_permalink($post- 
>post_parent) .\'"><em>\'. __(\'Back to\') .\' \'. get_the_title($post- 
 >post_parent) .\'</em></a><p>\';
    }
    echo \'<ul>\';
    echo $subpages;
    echo \'</ul>\';

    ?>

</div>

<?php
} else {

}
这适用于显示当前级别子项的情况。然而,在第一级儿童中,我想显示下面的儿童,在第二级儿童中,我想显示相同级别的儿童。

提前感谢您的帮助,非常感谢。

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

您需要首先计算出您所在的页面级别,以便知道要传递给child_of 的参数wp_list_pages. 尝试一下:

global $post;
$page_level = 0;
$post_parent = null;

// Work out what page level we\'re on
if($post->post_parent > 0) {
    $post_parent = get_post($post->post_parent);
    $page_level = ($post_parent->post_parent == 0 ? 1 : 2);
}

// Updated with page IDs
echo \'Current page: \'.$post->ID.\'<br />\';
echo \'Current parent: \'.$post->post_parent.\'<br />\';
echo \'Current level\'.$page_level.\'<br />\';
echo \'Loading pages from \'.($page_level == 2 ? $post->post_parent : $post->ID).\'<br />\';

$subpages = wp_list_pages(array(
    \'echo\'     =>0,
    \'title_li\' =>\'\',
    \'depth\'    =>1,
    \'child_of\' => ($page_level == 2 ? $post->post_parent : $post->ID)
));


if ( !empty($subpages) ) {
?>
<div class="services-sub-menu"> 
<?php
    if ( $post->post_parent != 0 ) {
        echo \'<p class="parent-link"><a href="\'. get_permalink($post->post_parent) .\'"><em>\'. __(\'Back to\') .\' \'. get_the_title($post->post_parent) .\'</em></a><p>\';
    }
    echo \'<ul>\';
    echo $subpages;
    echo \'</ul>\';

    ?>

</div>

<?php
} else {

}

相关推荐

Php/css:短码不能正确显示,并且只显示在头部(内容之前)

尝试创建要在弹出窗口中实现的短代码。我试图在页面中心以2x2的网格显示四幅图像。问题是这个短代码现在将所有内容都浮动,图像垂直显示在彼此的顶部,而不是在页面中心显示2x2。此外,当我在弹出窗口中实现快捷代码时,显示在每个页面顶部(页面内容之前)的内容不会显示在弹出窗口中。I\'ve tried:ob_start(); return ob_get_clean(); 这会阻止它显示在每个页面的头部,但它也不会输出任何其他内容。我做错了什么?在这里添加我的短代码功能,并在下面添加2x2网格布局