特定の投稿タイプの「公開済み」「下書き」などの投稿ステータス別に投稿数を取得したい場合、とてもいい方法があることを知りました。
「wp_count_posts」を使って投稿タイプの投稿数を取得する
「wp_count_posts」を使って取得します。
<?php wp_count_posts( $type, $perm ); ?>
使えるパラメーター
- $type(オプション)・・・投稿タイプ名(デフォルト:post)
- $perm(オプション)・・・どう作用するのか不明(デフォルト:空)
$typeのデフォルト値の「post」は投稿のことです。
$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です。
カスタム投稿タイプの投稿数を取得する場合
「スポット一覧」というカスタム投稿タイプがあったとします。
この投稿数を取得したい場合は、投稿タイプ名「post_type」を指定すればOKです。
投稿タイプ名を調べる方法
一例ですが、WordPressの管理画面で投稿タイプ名にマウスカーソルを持っていきます。リンク先のURLの最後らへんを見ると、投稿タイプ名が「spot」ということがわかります。
上の方法で調べるのが結構ラクかな~と思います。さっそく「wp_count_posts」のパラメーターに指定しましょう。
<?php var_dump(wp_count_posts('spot')); ?>
と。書けば済みます。
具体的な使い方の例としては、下のように変数に一旦格納して、表示したい投稿ステータスを指定すればOKだと思います。
<?php $count_posts = wp_count_posts('page'); //固定ページの投稿数を投稿ステータス別に取得 echo $count_posts->publish; //固定ページの公開済みの投稿数を表示する ?>
まとめ
投稿ステータス別に投稿数を表示したい、なんてことはそんなにないかも知れませんが・・・例えば「今月は100記事書くぞ!」という目標をトップページなどに掲げたとして、公開済みの投稿を表示して達成率を出したり。
「今下書きの記事が10記事あって・・・ちょっとたまってます!ひぃ~」とか、進捗などを表示したり・・・最近、記事更新数を競って遊んでいる時に使っていました。
以上、何かのご参考となりましたら幸いです。
このページを共有する