WP_Query オブジェクトのフィールド、$post_count と $found_posts の違い

0
817
views

WP_Query オブジェクトにはたくさんのフィールド変数があり、変数の内容を正しく理解して扱うというのが中々難しいところがあります。$post_count と $found_posts の違いもその1つです。

WP_Query オブジェクトの生成

最新5件の表示投稿データを取得するコード

 5);
    $query = new WP_Query($args); 
?>

このクエリでは全投稿のデータを取得してくるのですが、ループ内で表示できるのは最新の5件の投稿データです。

ループ処理

実際にループで確かめてみます。

コード

 5);
    $query = new WP_Query($args); 
?>
have_posts() ) : ?>
    
    have_posts() ) : ?> the_post(); ?> ' . get_the_title() . ''; ?>

実行結果

・ 23個目の記事
・ 22個目の記事
・ 21個目の記事
・ 20個目の記事
・ 19個目の記事

はい。WP_Query のインスタンスである $query が5件の表示データを持っているので、順番にループさせると get_the_title() メソッドでタイトルが順番に5つ表示されます。

クエリ全体では23件の投稿データ(投稿全件)を取得しているのですが、配列($args)で指定しているのは「ページごとで5件」です。したがって、ページごとで取得できる表示投稿データは5件です。

$post_count プロパティを利用する

ではここのループ内で WP_Query インスタンスのフィールド、$post_count を表示してみます。

ループ内で $post_count を使う

コード

post_count; ?>

実行結果

5

$post_count は「ページごと」の取得投稿数

実行結果からも分かるように、$post_count は「ページごと」で取得できた投稿の数です。クエリで取得できたすべての投稿データではありません。

$found_posts プロパティを利用する

次は同じループ内で同じく WP_Query インスタンスのフィールドである、$found_posts を表示してみます。

ループ内で $found_posts を使う

コード

found_posts; ?>

実行結果

23

$found_posts はインスタンスが保持している全投稿数

$found_posts は、現在のクエリ変数(この場合だと$query)に一致する投稿の合計であり、クエリで取得できたすべての投稿データです。

それはイコール、生成した WP_Query インスタンスが保持している全投稿数でもあります。

$post_count $found_posts
「ページごと」の取得投稿数 インスタンスが保持している全投稿数