web-dev-qa-db-ja.com

クエリ( 's = computer')とget_posts( 's = computer')の結果が異なる場合

2つの異なるコードがあり、2つの異なる結果が返されています。

$search_query = new WP_Query();
$search_posts = $search_query->query('s=computer'); 
echo count($search_posts);

vs.

$search_posts = get_posts('s=computer');
echo count($search_posts);

異なる値の理由は何ですか?

(最初のものによって提供された値は正しい。それは私がWPで通常の検索をするときに得た投稿の数と同じである。しかしコードの最初の部分はプラグインのphpファイルの中では働かない。テンプレートでのみ動作します。)

ありがとう。

2
Dan

get_posts()関数のデフォルトの引数には'numberposts' => 5があります。

したがって、5つ以上の結果を返す検索語をクエリしている場合、2番目のクエリは、クエリ文字列として5を渡さない限り、最大値の's=computer&numberposts=-1'を返します。

WP_Queryオブジェクトにはデフォルトの'numberposts'はありませんが、設定パネルの"ブログページの表示数"の影響を受けます。したがって、query()関数を使用して合計数を計算したい場合は、次のようにデフォルトをオーバーライドする必要があります。

$search_query->query('s=computer&nopaging=true')
11
goldenapples