gpt4 book ai didi

wordpress - 如何让 WordPress WP_Query->get_posts() 在多个类别上正常工作?

转载 作者:行者123 更新时间:2023-12-02 23:26:57 25 4
gpt4 key购买 nike

讨论 WP_Query() 的文档明确指出这应该有效:

$query = new WP_Query( 'category_name=tools,wordpress' );

但是,如果我使用WP_Query的类方法->get_posts() :

$query->get_posts();

我只从工具获取帖子(总共8个帖子)。

但是,如果我这样做:

while($query->have->posts()) { ... }

我可以按预期循环浏览所有帖子(总共 12 个帖子)。

这是设计使然、设计缺陷还是错误?

[编辑]这是我正在使用的实际代码:

// query
$query = 'category_name=tools,wordpress&orderby=date&order=asc&posts_per_page=-1';
$wpq = new WP_Query($query);

// loop-style version - shows all 12 posts
while($wpq->have_posts())
{
$post = $wpq->next_post();
echo "<p>{$post->post_title}</p>";
}

// get_posts()-style version, only shows 8 posts from tools
$posts = $wpq->get_posts();
foreach($posts as $post)
{
echo "<p>{$post->post_title}</p>";
}

谢谢

戴夫

最佳答案

好的,我查看了独立函数 get_posts() 中的代码,它提供了答案。

与 WordPress 的大多数内容一样,它完全不一致!

您必须使用WP_Query->query();,而不是WP_Query->get_posts();

// query
$query = 'category_name=tools,wordpress&orderby=date&order=desc&posts_per_page=-1';
$wpq = new WP_Query();

// new query() syntax has functionality of loop-style version but behaves like get_posts()
$posts = $wpq->query($query);
foreach($posts as $post)
{
echo "<p>{$post->post_title}</p>";
}

// debug
printr($wpq);

WordPress API 表现如此糟糕,真可惜。

[编辑]刚刚查看了 ->query() 内部,它在内部使用了 ->get_posts() 。这些简单的调用不应该都有不同的行为。

关于wordpress - 如何让 WordPress WP_Query->get_posts() 在多个类别上正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25395299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com