关于效率的问题。使用wp_query($args)
和$query = new WP_Query($args)
有什么区别?效率/ SQL查询数量有什么不同吗?一个总是优于另一个,还是有一种风格是首选?
例如,如果我想要一个基于类别的3列复杂页面,以下两个示例有何不同?
$query = new WP_Query("category_name=Issue 1")
while ($query->have_posts())....
VS
rewind_posts()
query_posts("category_name=Issue 1")
while(have_posts())...
答案 0 :(得分:2)
没有
一个只是打电话给另一个,这是来自WP source。
function query_posts($query) {
$GLOBALS['wp_query'] = new WP_Query();
return $GLOBALS['wp_query']->query($query);
}
上帝,我喜欢WP,它太棒了。失败。
答案 1 :(得分:2)
这里有一系列不错的答案:https://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts
根据经验,你最好选择第一个选项。使用query_posts,您基本上可以创建一个WP_Query并将其分配给全局wp_query。如果您忘记重置帖子,这可能会造成严重问题。希望所有有助于解释它!
答案 2 :(得分:1)
使用WP_Query
。
来自WordPress query_posts
Function Reference:
应该注意的是,使用它来替换页面上的主查询 会增加页面加载时间,在最坏的情况下会超过 将所需工作量增加一倍或更多。虽然好用,但是 功能也容易出现混乱和问题。见 有关详细信息,请在下面进一步说明。
对于一般的帖子查询,请使用
WP_Query
或get_posts
强烈建议您使用
来更改主查询pre_get_posts
过滤器 相反,通过选中is_main_query
使用WP_Query
,您可以在页面上运行多个查询。 query_posts
只是用自定义查询替换主循环。正如文档所述,有更好的方法来修改主循环而不是使用query_posts
。
答案 3 :(得分:0)
WP_Query是query_posts()
和get_posts()
函数的超集。这两个函数都将调用WP_Query。但是我发现与互联网存在以下差异。
query_posts()可能仅在一种情况下使用,即您需要修改页面的主查询(相对于简单的方法,有更好,更可靠的方法来完成页面查询)此功能)。它设置了许多全局变量,如果在其他任何地方使用或用于其他目的,将导致难以理解的错误。为此,任何现代WP代码都应使用更可靠的方法,例如使用pre_get_posts挂钩。 永远不要使用query_posts();
get_posts()在机制上非常相似,接受相同的参数,但是返回帖子数组,不修改全局变量,可以在任何地方安全使用 >
WP_Query 类在后台都有强大功能,但是您也可以创建和使用其自己的对象。更加复杂,限制更少,在任何地方都可以安全使用。