wp_count_posts()

投稿タイプの投稿数と、ユーザーが閲覧権限を持っているかどうかを判定。

wp_count_posts() は、投稿や固定ページ、カスタム投稿タイプなどの各投稿タイプごとに投稿数を取得する関数です。

使い方

wp_count_posts( $type = 'post', $perm = '' )

【返り値】

各ステータスの投稿数を含むオブジェクト。
投稿タイプがなければ空のオブジェクト。

パラメーター

  • $type(string)オプション

    数を取得する投稿タイプ。

    【初期値】 post

  • $perm(string)オプション

    ‘readable’、もしくは ”(空)。

    【初期値】”(空)

$perm パラメーターは読み取り可能な値をチェックし、もしユーザーが非公開の投稿を読むことができれば、サインインしているユーザーにそれを表示します。

詳細・注意事項

<?php
  $post_count = wp_count_posts();
  $posts_num = $post_count->publish;
  echo '現在公開されている投稿の記事は「'.$posts_num.'件」です。';
?>

引数が省略されていれば、初期値の 'post' (投稿)の数が取得されます。
他の投稿タイプの記事数を取得する場合は引数で指定します。

// 固定ページ
$page_count = wp_count_posts('page');

// カスタム投稿タイプ
$page_count = wp_count_posts('custom_post_type_name');

※「custom_post_type_name」は投稿タイプを作成したときに設定した名称を入れます。

wp_count_posts は投稿ステータス別に投稿数を返すので、ステータス指定が必要です。指定しないとエラーになります。

$posts_num = $count_posts->publish;

表示させたい時は大体が公開されている記事だと思いますが、指定できる投稿ステータスは以下のようなものがあります。「publish」の部分を別のプロパティに変更することで該当の投稿ステータスの数が表示されるようになります。

指定するプロパティ投稿ステータス
publish公開
future予約投稿
draft下書き
pendingレビュー待ち状態
private非公開
trashごみ箱
inherit継承記事(リビジョンなど)

動的に投稿タイプを指定する

複数のカスタム投稿タイプを使用していて、かつその投稿タイプのアーカイブや詳細ページで投稿数を表示させたい場合、一つ一つ指定せずとも動的にスラッグを取得して表示させることができます。

<?php
  $custom_post = get_post_type_object(get_post_type())->name;
  $custom_post_count = wp_count_posts($custom_post);
  echo $custom_post_count->publish;
?>

トップページやヘッダーなどで使用した場合は、メインループの投稿数が表示されます。

複数の投稿タイプを合わせた数を取得・表示

計算式を追加することで、複数の投稿タイプを合わせた数字を表示させることができます。

<?php
  // 「投稿」の公開数を取得
  $post_count = wp_count_posts();
  $posts_num = $post_count->publish;

  // 「カスタム投稿」の公開数を取得
  $custom_post_count = wp_count_posts('page');
  $custom_post_num = $custom_post_count->publish;

  // 2つの投稿タイプの記事数を足す
  $post_all = $posts_num + $custom_post_num;
  echo 'このサイトの記事は'.$post_all.'件あります';
?>

公式コードファイルとドキュメントはこちら

/wp-includes/post.php

wp_count_posts() - WordPress.org

コード Reference 一覧へ

TOPへ