我有以下页面结构,我需要在有子页面的页面上显示相同的结构:
- Childpage
- - Grandchildpage
- - Other Grandchildpage
- Other Childpage
以下代码用于在页面上显示结构。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
- - Other Grandchildpage
即使页面是子页面或孙子页面,显示页面层次结构的正确方法是什么?
最合适的回答,由SO网友:Pieter Goosen 整理而成
很明显$post_parent
属性将为0
在任何父页面上,因此您只希望在以下情况下运行$post_parent
不是0
我现在无法编写任何具体的代码,但简而言之,基本思想是:
首先检查当前post父级。如果post parent不是0
, 你会想得到最棒的职位
一旦我们确定当前post父级不是0
, 我们需要使用get_ancestors()
返回最顶端的父帖子。
Example
$parent = get_ancestors(
get_queried_object_id(), // Get current page ID
\'page\' // Post type
);
var_dump( $parent );
现在您有了一个父ID数组,您需要从该数组中获取最顶层的父ID。这将始终是数组中的最后一个ID,因此您需要
翻转阵列(array_flip
) 要首先获得最顶层的父级,请使用$parent[0]
获取最顶层的父值
其他php函数,如end
获取数组中的最后一个值
现在,您可以正常运行代码了。