好吧,标题揭示了一切。。。
代码如下:
$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参数的行为?!
非常感谢您的任何想法!!
最合适的回答,由SO网友:Pieter Goosen 整理而成
post_parent
退货only ID作为值给定的页面的子页面。
post_parent (int)-使用页面id仅返回子页面。设置为0仅返回顶级条目
要仅获取特定页面,请使用page_id
或pagename
或post__in
(与post_type=page
.
我建议你get_pages
它专门用于查询页面。
这里有个便条,wp_reset_query()
与一起使用query_posts
. 您应该使用wp_reset_postdata()
具有WP_Query
--
以下是来自以下评论的解决方案:
Polylang创建一个新的自定义参数“lang”。此参数似乎默认为“”,它应该返回带有any 价值相反,它只返回带有当前页面语言值的帖子(因此只有当前页面ID=5的子级)。作为修复,我现在手动循环“lang”的可用值,以获得包含“lang”所有值的页面。如果这是一个bug或是由我的环境引起的,我会与插件作者联系。