调用$query->query($args)
方法有什么不同吗?
$query = new WP_Query( $args );
只是“先实例化类,后查询”版本的快捷方式,如$query = new WP_Query; $posts = $query->query( $args );
. 您可以从类构造函数源代码中看到它here:
public function __construct( $query = \'\' ) {
if ( ! empty( $query ) ) {
$this->query( $query );
}
}
从性能角度来看,它是否相同?(我想确保它不会两次命中数据库。)
是的,除非你这样做:
$args = [ \'paged\' => 2 ];
$query = new WP_Query( $args );
$posts = $query->query( $args );
那就意味着双重查询。
但是,返回值存在差异:
$query = new WP_Query( $args ); // returns an object
$posts = $query->query( $args ); // returns an array
和
get_posts()
(
source) 例如,使用第二种方法。
我想知道他们这样做是否有充分的理由
我不知道他们为什么那样做,但确实如此perfectly fine (尽管在实例化类时使用直接查询时,代码会更紧凑一些)。我更关心的是如何使用正确的查询参数;e、 g.使用适当的立柱类型和设置no_found_rows
到true
不需要分页时—事实上,将其设置为true
可以提高性能。