将页面层次结构保持在 wp_list_pages 中,即使在子代或孙代中也是如此
Keep page hierarchy in wp_list_pages, even if on a child or grandchild
我有以下页面结构,我需要在那些有子页面的页面上显示相同的结构:
- Childpage
- - Grandchildpage
- - Other Grandchildpage
- Other Childpage
以下代码用于显示page.php上的结构:
<ul class="sidemenu-list">
<?php
if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=1");
else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=1");
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
</ul>
这在父页面上有效。但是当我在其中一个子页面或孙页面上时,这不再起作用了。
按照上面的结构示例,当我在 'Childpage' 上时,我只得到以下内容:
- Childpage
- Other Childpage
当我打开 'Grandchildpage' 时,我只得到:
- - Grandchildpage
- - Other Grandchildpage
即使页面是子页面或孙页面,显示页面层次结构的正确方法是什么?
使用下面的代码:
<?php
if(!$post->post_parent){
// get the child of the top-level page
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
}else{
// get the child pages if we are on the first page of the child level.
//$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
if($post->ancestors)
{
// now get an ID of the first page
// wordpress collects ID in reverse order, so the "first" will be the last page
$ancestors = end($post->ancestors);
$children = wp_list_pages("title_li=&child_of=".$ancestors."&echo=0");
}
}
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
我有以下页面结构,我需要在那些有子页面的页面上显示相同的结构:
- Childpage
- - Grandchildpage
- - Other Grandchildpage
- Other Childpage
以下代码用于显示page.php上的结构:
<ul class="sidemenu-list">
<?php
if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=1");
else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=1");
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>
</ul>
这在父页面上有效。但是当我在其中一个子页面或孙页面上时,这不再起作用了。
按照上面的结构示例,当我在 'Childpage' 上时,我只得到以下内容:
- Childpage
- Other Childpage
当我打开 'Grandchildpage' 时,我只得到:
- - Grandchildpage
- - Other Grandchildpage
即使页面是子页面或孙页面,显示页面层次结构的正确方法是什么?
使用下面的代码:
<?php
if(!$post->post_parent){
// get the child of the top-level page
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
}else{
// get the child pages if we are on the first page of the child level.
//$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
if($post->ancestors)
{
// now get an ID of the first page
// wordpress collects ID in reverse order, so the "first" will be the last page
$ancestors = end($post->ancestors);
$children = wp_list_pages("title_li=&child_of=".$ancestors."&echo=0");
}
}
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>