WordPress

WordPress 投稿数を取得して表示する方法

WordPress 投稿数を取得して表示する方法

WordPress で投稿の公開済の投稿数を取得して表示する方法を紹介します。
例えば、投稿やカスタム投稿のアーカイブで、投稿数を表示したい場合に便利な方法です。
合わせて、固定ページやアーカイブページでタームに紐づく投稿の数を表示方法なども紹介します。

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

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

カスタム投稿タイプの公開済みの投稿数を取得して表示する方法を紹介します。
投稿数の取得にはテンプレートタグ wp_count_posts() を使用します。
次のコードは、カスタム投稿タイプのスラッグが products の場合の投稿数の取得方法です。

<?php // 投稿数の取得
$count_post = wp_count_posts( 'products' ); // カスタム投稿タイプのスラッグを指定
?>

投稿タイプの指定は $count_post = wp_count_posts( 'products', 'readable' );products を変更してください。
取得した値は次のように格納されています。

stdClass Object ( [publish] => 123 [future] => 0 [draft] => 0 [pending] => 0 [private] => 0 [trash] => 0 [auto-draft] => 0 [inherit] => 0 )

公開済の投稿を表示する場合は $count_post に対して publish(公開済み) を指定します。

<?php
$count_post = wp_count_posts( 'products' ); // カスタム投稿タイプのスラッグを指定
echo $count_post->publish; // 公開済の投稿数を表示
?>

変更できるプロパティは次の通りです。

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

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

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

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

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

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

<?php
$count_page = wp_count_posts('page'); // 固定ページを指定
echo $count_page->publish; // 公開済の投稿数を表示
?>

カテゴリやタグのカテゴリアーカイブページで投稿数を表示

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

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

メインクエリの投稿数を表示

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

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

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

投稿やカスタム投稿タイプの合計を表示する場合は、メインクエリをカスタマイズして投稿数を取得する必要があります。
例えば、投稿とカスタム投稿タイプ products の合計数を表示したい場合は、次のコードを 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','products' )); // 投稿タイプの指定
}
}
}

メインクエリにカスタム投稿タイプを追加することで、wp_count_posts() から投稿を合計した投稿数を取得することができるようになります。

まとめ

WordPress で投稿の公開済の投稿数を表示する方法を紹介しました。

合わせて読みたい関連記事