查询所有页面,包括Wordpress中子页面的子页面

时间:2018-01-25 18:06:08

标签: php wordpress

我有以下结构

Services
  -Page_1
  -Page_2
     --Page_3
     --Page_4

我使用Wp-query来获取页面。这是我的args:

  <?php $args = array(
       'post_type' => 'page',
       'post_parent' => '45'
 ); ?>

45是服务页面的ID。 但我只获得第一级Page_1和Page_2。我如何获得所有页面?我使用的是高级自定义字段插件,因此使用get_pages()不是一个好选择,是吗?

1 个答案:

答案 0 :(得分:1)

正如您的评论中所提到的,最简单的解决方案是实际使用get_pages()。如果您能够获取页面的ID(可以使用get_pages()),您仍然可以获取帖子的元数据,这样您仍然可以使用ACF的自定义字段。

以下是get_pages()

的示例
$args = array(
    'child_of' => 45,
    'post_type' => 'page',
); 
$pages = get_pages($args);

我们想要关注的get_pages()WP_Query之间的主要区别是'child-of'=>45参数与'post_parent'=>45

child-of参数将抓住整个层次结构中的所有孩子,即儿童和孩子的孩子等。

相比之下,post-parent的{​​{1}}参数只会抓取页面的直接子项。

与ACF结合使用

如果您需要从ACF获取自定义字段,您仍然可以使用get_post_meta()

如果您的自定义字段包含值数组,则需要先将其反序列化,然后循环遍历这些值:

WP_Query