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

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

 

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

 

以上。

 

簡潔すぎるので補足

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

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

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

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

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

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

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

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

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

コメントをどうぞ

メールアドレス (必須・公開されません)
コメント本文

  • スパム・迷惑コメント投稿防止のため、メールアドレスの入力が必須ですが、公開はされません。何卒ご協力のほどお願いいたします。
  • 投稿いただいたコメントは管理者のチェック後掲載しておりますので、即時には反映されません。
  • 記載内容に関する批判や間違いの指摘などはそのまま掲載する方針ですが、投稿内容と無関係な誹謗中傷、一方的な罵詈雑言の場合は削除させていただく可能性があります。
  • 通常業務の合間にコメントチェックをしておりますので、すべてのコメントへのお返事が出来ない場合もございます。あらかじめご了承ください。
  • 管理人個人への連絡等は、コメント欄ではなくコンタクトフォームをご利用ください。

今年もスタッフしました!

書籍を執筆しました

WordPress 標準デザイン講座【Version 4.x対応】


翔泳社さんより、2015/02/27発売です。

寄付歓迎(・ω<)☆

当ブログの記事があなたの役に立ったら、気が向いたらでいいのでドネーションいただけると更新の励みになります!
気が向いた方はこちらから

ブログ内検索