我试图在wordpress中列出所有父页面。更具体地说,一个用作面包屑跟踪的祖先页面列表。
我希望得到父母,父母等,一直到顶级。
例如,对于此页面结构:
从子信息页调用它应该返回
从Subsubpage调用它应该返回
答案 0 :(得分:0)
get_post_ancestors()以数组的形式返回所有祖先的页面ID。
wp_list_pages()接受逗号分隔的页面ID列表
implode()函数将数组与字符串粘合在一起,在本例中为逗号。
通过使用逗号破解get_post_ancestors的结果,它有效地创建了一个逗号分隔的祖先页面ID列表,以传递给wp_list_pages()。
wp_list_pages()的默认用法将创建嵌套列表。将depth选项设置为-1会将所有项目排列在一个平面列表中。
最后一个重要的位,if语句检查以确保帖子在列出父页面之前实际上有父级。如果没有父项,并且调用了get_post_ancestors(),则会因某种原因返回WP站点上的所有页面。
全部放在一起,
<ul>
<?php
$ancestorsCSV = implode( ',' , get_post_ancestors( $post));
if ($post->post_parent){
wp_list_pages('include='.$ancestorsCSV.'&title_li=&depth=-1' );
}
?>
</ul>
令我惊讶的是,我无法通过谷歌搜索找到这样的解决方案。