WordPressで特定の投稿タイプの投稿数を「投稿ステータス別」で取得する方法【こんないい方法あったんだな~】

特定の投稿タイプの「公開済み」「下書き」などの投稿ステータス別に投稿数を取得したい場合、とてもいい方法があることを知りました。

「wp_count_posts」を使って投稿タイプの投稿数を取得する

wp_count_posts」を使って取得します。

<?php wp_count_posts( $type, $perm ); ?>

使えるパラメーター

  • $type(オプション)・・・投稿タイプ名(デフォルト:post)
  • $perm(オプション)・・・どう作用するのか不明(デフォルト:空)

$typeのデフォルト値の「post」は投稿のことです。

wordpresspostcount00

$permについてはいろいろネット上を探したり、自分で検証してもピンとくる情報が得られませんでした。オプション指定とされているので、特に私は何も設定しませんでした。

さっそく投稿数を取得しよう

例えば、パラメーターに何も設定せずに中身を表示してみます。

<?php var_dump(wp_count_posts()); ?>

表示結果サンプル

object(stdClass)#1934 (8) {
 ["publish"]=>
 string(2) "25"
 ["future"]=>
 int(0)
 ["draft"]=>
 string(1) "1"
 ["pending"]=>
 int(0)
 ["private"]=>
 int(0)
 ["trash"]=>
 int(0)
 ["auto-draft"]=>
 string(1) "1"
 ["inherit"]=>
 int(0)
}

上の表示結果にあるように、投稿のステータス別でデータが取得できます。

  • publish 公開済みの投稿
  • future 予約投稿
  • draft 下書きの投稿
  • pending レビュー待ちの投稿
  • private 非公開の投稿
  • trash ゴミ箱に入っている投稿
  • auto-draft 自動保存された下書きの投稿
  • inherit リビジョンや添付ファイル

って感じです。

投稿タイプを指定することができる

固定ページの投稿数を取得したい場合は、

<?php var_dump(wp_count_posts('page')); ?>

でOKです。

カスタム投稿タイプの投稿数を取得する場合

「スポット一覧」というカスタム投稿タイプがあったとします。

wordpresspostcount02

この投稿数を取得したい場合は、投稿タイプ名「post_type」を指定すればOKです。

投稿タイプ名を調べる方法

一例ですが、WordPressの管理画面で投稿タイプ名にマウスカーソルを持っていきます。リンク先のURLの最後らへんを見ると、投稿タイプ名が「spot」ということがわかります。

wordpresspostcount03

上の方法で調べるのが結構ラクかな~と思います。さっそく「wp_count_posts」のパラメーターに指定しましょう。

<?php var_dump(wp_count_posts('spot')); ?>

と。書けば済みます。

具体的な使い方の例としては、下のように変数に一旦格納して、表示したい投稿ステータスを指定すればOKだと思います。

<?php
$count_posts = wp_count_posts('page'); //固定ページの投稿数を投稿ステータス別に取得
echo $count_posts->publish; //固定ページの公開済みの投稿数を表示する
?>

まとめ

投稿ステータス別に投稿数を表示したい、なんてことはそんなにないかも知れませんが・・・例えば「今月は100記事書くぞ!」という目標をトップページなどに掲げたとして、公開済みの投稿を表示して達成率を出したり。

「今下書きの記事が10記事あって・・・ちょっとたまってます!ひぃ~」とか、進捗などを表示したり・・・最近、記事更新数を競って遊んでいる時に使っていました。

以上、何かのご参考となりましたら幸いです。

著者:bouya Imamura