0

我试图在 wordpress 中列出所有父页面。更具体地说,一个祖先页面列表,用作面包屑路径。

我想得到父母,它的父母等等。一直到顶层。

例如,对于这个页面结构:

    • 子页面
      • 子页面
        • 子子页面

从子子页面调用它应该返回

  • 子页面
  • 子页面

并从子页面调用它应该返回

  • 子页面
4

1 回答 1

0

get_post_ancestors() 将所有祖先的页面 id 作为数组返回。

wp_list_pages() 接受以逗号分隔的页面 ID 列表

implode() 函数将数组与字符串粘合在一起,在本例中为逗号。

通过用逗号分解 get_post_ancestors 的结果,它有效地创建了一个以逗号分隔的祖先页面 id 列表以传递给 wp_list_pages()。

wp_list_pages() 的默认用法将创建嵌套列表。将深度选项设置为 -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>

令人惊讶的是,我无法通过谷歌搜索找到这样的解决方案。

于 2012-10-23T03:23:23.227 回答