Get_post()排除特定帖子/页面的所有子项

时间:2017-01-24 作者:AdamJones

我知道如何使用get\\u posts函数的include和exclude参数,但如何告诉get\\u posts排除文档及其下的每个子页面?

我知道我可以使用get children()收集子页面的所有ID,然后在exclude参数中附加这些ID的数组,但是没有更好更快的方法吗?

1 个回复
SO网友:Tom J Nowell

我知道如何使用get\\u posts函数的include和exclude参数,但如何告诉get\\u posts排除文档及其下的每个子页面?

你不能,get_posts 不会搜索子帖子如果你排除了某些内容,你必须准确地告诉它你想要排除的内容

我知道我可以使用get children()收集子页面的所有ID,然后在exclude参数中附加这些ID的数组,但是没有更好更快的方法吗?

这几乎就是你应该做的,除了:

不要使用childrenget_posts, 使用WP_Query 对于这两种情况,请不要使用exclude参数,请求比需要更多的帖子,然后在PHP中手动检查,这将大大加快速度,因为exclude使得查询非常昂贵(随着帖子数量的增加,这些查询的成本也会增加)请记住,始终查询您想要的内容,而不是您不想要的内容。当你说你不想要什么东西时,数据库必须收集每一篇帖子,过滤掉那些不匹配的帖子,创建第二个数据集,然后在不排除新数据集的情况下运行查询。即使您只需要2到3个帖子,它也会加载所有内容。这是真的,不包括帖子ID、类别中的帖子、具有特定帖子元值的帖子等

相关推荐