WordPress 記事数を取得する最もシンプルな方法

March 24, 2015

トップページでは全記事数、カテゴリ ページでは そのカテゴリの記事数、タグ アーカイブ ページでは そのタグが付いた記事数。記事数を取得したい場面は いくつか考えられます。それぞれについて最もシンプルな方法です。

How to Get Total Number of Posts in WordPress

「wordpress 記事数 取得」の検索結果が凄い。コピペ記事がコピペ元より余裕で上位に表示される。コピペ元もコピペだったりする。いや、コピペはどうでもいい。そもそもオリジナルを争うほどのネタじゃない。その方法が いきなりデータベースにクエリを投げていても大半の人々は関心がない。負の連鎖の完成だ。本稿は、筆者のように(もう少しスマートな方法はないものか…)と感じてしまう方々に向けた記事です。

トップページで全記事数を取得する

もう少し詳しくいうと、メイン クエリの記事数を取得する方法です。home.php などで使用できます。

global $wp_query;

echo '記事数は ' . $wp_query->found_posts . ' 件です。';

$wp_query はメイン クエリが保存されているグローバル変数です。メイン クエリの全記事数は found_posts プロパティに格納されているので、取得する際に改めてデータベースにクエリを投げる必要はありません。

多くの場合、この方法が最もシンプルに意図した結果を得られると思います

$wp_query については、詳細を別記事にしていますので よろしければご参照ください。

カテゴリ ページで そのカテゴリ内の記事数を取得する

$term = get_queried_object();

echo 'このカテゴリの記事数は ' . $term->count . ' 件です。';

タグ ページで そのタグが付いている記事数を取得する

$term = get_queried_object();

echo 'このタグは ' . $term->count . ' 件の記事に付いています。';

同じコードがカテゴリ ページ(category.php)とタグ ページ(tag.php)、両方で使えます。

get_queried_object() 関数については以下のページをご参考にどうぞ。

複雑な条件に合致する記事数を取得する

global $wpdb;
$numposts = $wpdb->get_var("SELECT count(*) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post'");

echo 'クエリに合致するのは ' . $numposts . ' 件です。';

WHERE 区を変更すれば、どんなに複雑な条件でも記事数を取得できます。上記のコードでは post_status が publish で、かつ post_type が post である記事の数が取得できます。ないでしょう。この方法を使うシチュエーションを思い付かない。単に筆者のクリエイティブが足りないからかも知れない。でも ないです。

記事にしてみたものの、おそらく筆者には負の連鎖を断ち切る力はありません。届いた人にだけ役立てばいい。それで いいんだ。