我已经有一段时间没有与WordPress合作了,但在我看来:
您正在执行两次查询
当你通过时,首先
$args
在实例化期间提交给构造函数。
当你打电话的时候query()
.
With this, you\'re essentially overwriting the first query (the one that contains the orderby=rand).
这个
documentation of WP_Query 提到
get_posts()
如果在构造函数中使用参数,则调用,并且不应调用两次:
&get_posts() – 从数据库中获取并返回请求的帖子。还填充$posts和$post\\u count。注:This is called during
construction if WP_Query is constructed with arguments. 它不是幂等且should not be called more than once on the same query
object. 这样做可能会导致查询中断。
以及query()
方法的文档声明它调用get_posts()
, 因此它被称为两次:
&query( $query ) – Call parse\\u query()和get_posts(). 返回get\\u posts()的结果。
解决方法:要么把所有东西都放进去$args
, 或添加orderby
参数太大$wp_query->query(..)
呼叫