【WordPress】記事数を取得して表示|検索結果、カテゴリー・タグアーカイブページなど
WordPressでサイトを作成していると、検索結果ページやカテゴリー・タグアーカイブページ内の記事数を表示したい場合があるかもしれません。
今回は、そのような際に使用できるソースコードの例となります。
検索結果ページでヒットした記事数を取得して表示する例
以下は、検索にヒットした記事数を出力する例となり、検索結果ページ内に記述します。
<?php
// 検索結果でヒットした記事数を取得
$found_posts = $wp_query->found_posts;
echo '<p>検索キーワード「' . get_search_query() . '」の記事数は' . $found_posts . '件となります。</p>';
?>
以下、ソースコードのポイントとなる箇所の説明となります。
$wp_queryについて
$wp_queryはグローバル変数となり、現在のクエリがセットされているWP_Query クラスのインスタンスとなります。
$wp_queryオブジェクトのプロパティfound_postsは、現在のクエリの投稿数を取得でき、検索結果ページ以外でも投稿数を取得できます。
今回の例では、現在の検索結果ページ内の投稿数を取得しています。
get_search_query()について
get_search_query関数は、現在の検索クエリ文字列を取得できる関数となります。
カテゴリー・タグアーカイブページで記事数を取得して表示する例
以下は、カテゴリー・タグアーカイブページ内の記事数を出力する例となり、アーカイブページ内で記事数を表示したい箇所に記述します。
<?php
// カテゴリーまたはタグアーカイブページのオブジェクトを取得
$obj = get_queried_object();
// カテゴリーまたはタグ名を取得
$term_name = $obj->name;
// カテゴリーまたはタグアーカイブページ内の記事数を取得
$count = $obj->count;
echo '<p>' . $term_name . 'のアーカイブページ。記事数は' . $count . '件となります。</p>';
?>
以下、ソースコードのポイントとなる箇所の説明となります。
get_queried_object()について
get_queried_object()は、現在のページのオブジェクトを取得できる関数となります。
今回の例では、get_queried_object()のプロパティからカテゴリー、タグアーカイブページの名前・記事数を取得しています。
get_queried_object()については以下のリンク先を参考にしてみてください。
すべての記事数を取得して表示する例
以下は、すべての記事数を取得して出力する例となり、記事数を表示したい箇所に記述します。
<?php
// 各投稿ステータスの投稿数をプロパティとして持つオブジェクトを取得
$count_posts = wp_count_posts();
// 投稿ステータスが「公開済」の投稿数を取得
$publish_posts = $count_posts->publish;
echo '<p>すべての記事数は' . $publish_posts . '件となります。</p>';
?>
以下、ソースコードのポイントとなる箇所の説明となります。
wp_count_posts()について
wp_count_posts()は、各投稿ステータスの投稿数をプロパティとして持つオブジェクトを取得できます。
今回の例では、wp_count_posts()のプロパティpublishから投稿ステータスが「公開済」の投稿数を取得しています。