WordPressで全記事数を取得・表示するためのコードのほんとの決定版(または公式の関数を使おうという話)

2016年8月23日

検索で数年前の情報が上位に出ているのをアップデートしたい企画第3弾(くらい)です。

 

wp_count_posts関数を使ってください。

 

以上。

 

簡潔すぎるので補足

Codexに「この関数は指定した投稿タイプの各投稿ステータスの投稿数を取得できます。」とありますので、たとえば「公開済み」の投稿についての総数を知りたい場合、

<!--?php 
	$count_posts     = wp_count_posts();
	$published_posts = $count_posts--->publish;
	echo '全記事数は'. $published_posts .'件です。';
?&gt;

とすればよいです。
投稿タイプ別の投稿数も取れます。

ただ、引数に配列は受け付けてくれないようなので、複数の投稿タイプの記事数を合算したい場合は

<!--?php 
	$count_posts     = wp_count_posts( 'post' );
	$count_pages     = wp_count_posts( 'page' );
	$published_posts = $count_posts--->publish;
	$published_pages = $count_posts-&gt;publish;
	$allposts        = $published_posts + $published_pages;
	echo '全記事数は'. $allposts .'件です。';
?&gt;

て感じで別々に取って足し算すればいいと思います。

2009年くらいに書かれたブログ記事が元ネタだと思われる、以下のようなデータベースに直接問い合わせるようなコードは負荷もかかりますので、単純に全記事数を取れればいいだけだったり、コードの意味が分からない場合は使わないようにしましょう。

<!--?php $numposts = $wpdb--->get_var("SELECT count(*) FROM $wpdb-&gt;posts WHERE post_status = 'publish' AND post_type IN ('post', 'page')");
if (0 &lt; $numposts) $numposts = number_format($numposts);
echo '全記事数は'. $numposts .'件です。'; ?&gt;

 
データベースに問い合わせないといけない複雑な条件のときだけにしときましょう。