これらについてSEで number of questions _を読んだことがありますが、それでも正確な値はわかりません。使用法による違い。おそらく、大多数の二次ループにWP_Queryを使用し、配列で返される結果が必要な場合にのみget_postsを使用すると言うか、または別の言い方をすると、配列とオブジェクトが返す2つの主な違いがあります。 、または私が知っておくべき他のいくつかの主要な要因はありますか?
get_posts()
はスリムなWP_Query
として見ることができます。実際、 ソース :を見てください。
//... prepares query array $r
$get_posts = new WP_Query;
return $get_posts->query($r);
get_posts()
はWP_Query
を使用しますが、投稿の配列のみを返します - それ以上はありません。さらにそれを設定します。
$r['no_found_rows'] = true;
通常(デフォルトではWP_Query
オブジェクトを使用) - WordPressは最初の10回目以降に投稿されていても、合計投稿数を照会します。そのため、get_posts()
は実際には(わずかに)速くなります(スティッキーポストも無視されます)。
投稿の配列だけが必要で、クエリオブジェクトにneedを使用しない場合は-use get_posts()
。それ以外の場合で、クエリオブジェクトメソッド、ページネーション、スティッキポストへのアクセスが必要な場合はWP_Query
を使用してください。
注意すべき重要な点の1つは、get_posts()
にはnew WP_Query()
にはないpost_type
とpost_status
を含む多数のデフォルト引数があることです。関数のデフォルトは、公開された投稿の取得を容易にするように構成されています。別の何かが必要な場合は、thosパラメーターを明示的に渡す必要がありますが、WP_Query()
を使用する必要はありません。
たとえば、投稿ステータスに関係なくすべての投稿を取得する場合は、get_posts( array( "post_type" => 'any' ) );
を呼び出す必要があります(「post_type」を空白のままにするか、empty()
がtrue
と評価するものはget_posts()
デフォルト値の「公開」を適用します)。