WordPress のカテゴリやタグや日付のアーカイブに「全○件のうち○件目を表示しています」ってな感じのメッセージを表示したい!
Amazon 等の EC サイトの商品の検索結果みたいなの。
環境
- WordPress 5.8.1-ja
- PHP 7.4.25
解決手順
まず、テーマフォルダーの function.php
に下記を追加する。
この関数でアーカイブに含まれる件数の取得、表示している記事が何番目から何番目かの計算を行ってる。
表示されている記事が 1 つの場合の処理もしてる。
function get_archive_message()
{
global $wp_query;
$page_start = ( get_query_var( 'posts_per_page' ) * ( get_query_var( 'paged' ) ? get_query_var( 'paged' ) - 1 : 0 ) ) + 1;
$page_end = $page_start + $wp_query->post_count - 1;
return '全 ' . $wp_query->found_posts . ' 件のうち ' . ( $page_start == $page_end ? $page_start : $page_start . '-' . $page_end ) . ' 件目を表示しています。';
}
メッセージを表示したい部分に下記のような感じで先程 function.php
に追加した関数を呼び出す。
<?php if (is_archive()) : ?>
<?php echo get_archive_message(); ?>
<?php endif; ?>
全件数 32 件、1 ページの表示件数が 5 件、開いているページが 3 ページ目だとすると、このコードを追加した部分に「全 32 件のうち 11 - 15 件目を表示しています」と表示される。
編集後記
今回のコードも作成中のテーマで使ってるので、実際に運用して様子を見たい。
前回のもそうなんだけど、関数名やら変数名を名付けるのが苦手っす…。ブログのパーマリンクは更に3倍増しで苦手っす。(どっちもあとから気になって変えたくなっちゃう!)