WP_QUERY POST_PARENT参数始终返回当前页面的子级

时间:2014-11-03 作者:sba222

好吧,标题揭示了一切。。。

代码如下:

$args = array(
"post_type" => "page",
"post_parent" => $cat, // runs through a loop of 5, 128, 130
"posts_per_page" => -1
);

print_r($args);

$postsLang = new WP_Query($args);

while ($postsLang->have_posts()) {
    $postsLang->the_post();
    $postID = get_the_ID();
    array_push($result, $postID);
}
wp_reset_query();

print_r($result);
此处打印输出:

Array ( [post_type] => page [post_parent] => 5 [posts_per_page] => -1 ) 
Array ( [0] => 30 [1] => 23 ) 

Array ( [post_type] => page [post_parent] => 128 [posts_per_page] => -1 ) 
Array ( [0] => 30 [1] => 23 ) 

Array ( [post_type] => page [post_parent] => 130 [posts_per_page] => -1 ) 
Array ( [0] => 30 [1] => 23 ) 
因此$参数正确地进入查询,但结果总是一样的:当前页面子项的ID(ID=5)。

我甚至可以将post\\u parent static设置为128,仍然可以获得当前页面的子级。

如果删除post\\u parent参数,我将获得所有页面(我应该这样做)。

我对get\\u posts也有同样的问题,这让我认为语法是正确的,但我可能误解了post\\u parent参数的行为?!

非常感谢您的任何想法!!

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

post_parent 退货only ID作为值给定的页面的子页面。

post_parent (int)-使用页面id仅返回子页面。设置为0仅返回顶级条目

要仅获取特定页面,请使用page_idpagenamepost__in (与post_type=page.

我建议你get_pages 它专门用于查询页面。

这里有个便条,wp_reset_query() 与一起使用query_posts. 您应该使用wp_reset_postdata() 具有WP_Query

--

以下是来自以下评论的解决方案:

Polylang创建一个新的自定义参数“lang”。此参数似乎默认为“”,它应该返回带有any 价值相反,它只返回带有当前页面语言值的帖子(因此只有当前页面ID=5的子级)。作为修复,我现在手动循环“lang”的可用值,以获得包含“lang”所有值的页面。如果这是一个bug或是由我的环境引起的,我会与插件作者联系。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post