WordPress カスタム投稿タイプなどの記事の投稿数を表示する方法

Last update 
/ Posted by Takumi Hirashima

WordPress カスタム投稿タイプなどの記事の投稿数を表示する方法

WordPress でカスタム投稿タイプの投稿数を表示する方法を紹介します。
合わせて、現在表示しているアーカイブページのタームに紐づく投稿の数を表示する方法なども紹介します。

  1. カスタム投稿タイプの投稿数の表示
    1. スラッグを動的に指定する場合
    2. 固定ページの投稿数を表示
  2. カテゴリアーカイブページで投稿数を表示
  3. 投稿数の表示
    1. 投稿やカスタム投稿タイプの合計数を表示する場合

カスタム投稿タイプの投稿数の表示

次のコードはカスタム投稿タイプのスラッグが blog の場合の表示方法です。

<?php 
  $count = wp_count_posts( 'blog', 'readable' ); // カスタム投稿タイプのスラッグを指定
  echo $count->publish; // 公開状態の数を表示
?>

$count から publish プロパティにアクセスすることで公開している投稿数を表示することができます。
変更できるプロパティは以下の通りです。

公開済publish
誰でも見ることができる投稿
予約済future
未来の日付に公開を設定された投稿
下書きdraft
特定の権限を持つユーザーしか閲覧できない未完成の投稿
非公開private
WordPress 閲覧権限を持つユーザーしか見られない投稿

スラッグを動的に指定する場合

カスタム投稿タイプのスラッグを動的に指定する場合は get_post_type_object() を使用します。
次のコードをカスタム投稿のアーカイブや詳細ページのテンプレートに追加します。

<?php 
  $custom_post_name = get_post_type_object(get_post_type())->name; // カスタム投稿タイプのスラッグを表示
  $count = wp_count_posts( $custom_post_name , 'readable' ); // カスタム投稿タイプのスラッグを指定
  echo $count->publish; // 公開状態の数を表示
?>

固定ページの投稿数を表示

固定ページの数を表示する場合は page を指定します。

<?php
  $count_pages = wp_count_posts('page'); // 固定ページを指定
?>


<h2 id="anchor02">カテゴリアーカイブページで投稿数を表示</h2>

現在表示しているカテゴリアーカイブページのカテゴリ(タグやターム)に紐づく投稿数を表示する場合は、<code>get_queried_object()</code> を使用します。
この関数は、アーカイブページを表示中ならカテゴリオブジェクトを取得できるので、そこから格納されているカウント数を取り出して表示します。


<?php 
  $term = get_queried_object();
  echo $term->count; 
?>

投稿数の表示

現在表示しているメインクエリの投稿数を表示したい場合は $wp_query から投稿数を取得します。
この方法は、管理画面にログインしていると非公開の記事も含まれるので注意が必要です。

<?php 
  global $wp_query;
  echo '投稿数'.$wp_query->found_posts.'件';
?>

投稿やカスタム投稿タイプの合計数を表示する場合

投稿やカスタム投稿タイプを合計した数を表示する場合は、メインクエリをカスタマイズして投稿数を取得します。
次のコードでは、デフォルトの投稿とカスタム投稿タイプ blog の合計数を表示します。
実装するには次のコードを functions.php に追加してください。

/* 【出力カスタマイズ】メインクエリーをカスタマイズ */
add_action( 'pre_get_posts', 'foo_modify_main_queries' ); 
function foo_modify_main_queries ( $query ) {
  if ( ! is_admin() && $query->is_main_query() ) { // 管理画面以外 かつ メインクエリーを対象とする
    if ( $query->is_home() ) { // ホームページに 投稿とカスタム投稿タイプを含める
      $query->set( 'post_type', array( 'post','blog' )); // 投稿タイプの指定
    }
  }
}

まとめ

WordPress でカスタム投稿タイプの投稿数を表示する方法を紹介しました。

私が続けて読みたい関連記事

スポンサーリンク