WordPressのサイト内検索で検索結果の件数を表示したいと思った事はないでしょうか?
表題にもあるように「全●件中●件目」と表示する事で、ユーザーの利便性も向上するかと思いますので実装する際は参考にしてみてください。
検索結果の件数を「全●件中●件目」と表示する方法
まずは、検索結果の件数を「全●件中●件目」と表示するコードをご覧ください。
search.phpに記述する事で表示出来ますが、記事の一覧ページなどでも応用可能です。
global $wp_query;
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$posts_per_page = get_query_var('posts_per_page');
$total = $wp_query->found_posts;
$start = (($paged - 1) * $posts_per_page) + 1;
$end = min($paged * $posts_per_page, $total);
echo "<p>全" . $total . "件中" . $start . "件〜" . $end . "件目を表示</p>";
上記のコードで「全●件中●件目」という表示が出力できます。
次項で、各内容を詳しく解説していきます。
各内容の解説
先ほどのコードの各内容は以下の通りです。
グローバル変数$wp_queryを使用するための宣言をする
global $wp_query;
グローバル変数$wp_queryの中に検索結果の投稿データが入っていますので使用する為の宣言をします。
ループ外で使用する為には宣言が基本的には必要です。
現在のページ数と1ページに表示する件数を取得
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$posts_per_page = get_query_var('posts_per_page');
WordPressのget_query_var()関数を使用し、変数$pagedに現在のページ数(何ページ目か)を代入、変数$posts_per_pageには1ページに表示する件数を代入しています。
検索結果の全投稿数を取得
$total = $wp_query->found_posts;
$wp_query->found_postsで、検索結果で取得した投稿の総数を取得できます。
変数$totalに取得した値を代入しています。
ページに表示する記事が何番目から何番目になるかを計算し変数に代入
$start = (($paged - 1) * $posts_per_page) + 1;
//((現在のページ番号 - 1) * 1ページに表示する件数) + 1
$end = min($paged * $posts_per_page, $total);
//min(現在のページ番号 * 1ページに表示する件数, 検索結果の全投稿数)
//min関数で上記の中で少ない方の数字を取得
表示する記事の最初と最後の番号(数字)を変数$startと$endに代入しています。
検索キーワードも表示する方法
「全●件中●件目」の日の他に、検索キーワードも表示するには以下のように記述する事で表示可能です。
<?php
$search_query = get_search_query();
$search_keyword = "";
if($search_query) {
$search_keyword = "「" . $search_query . "」の";
}
echo "<p>" . $search_keyword . "検索結果</p>";
?>
get_search_query()関数で検索キーワードを取得し、検索キーワードがある場合は「●●の検索結果」と表示、検索キーワードが無い(空の場合)は「検索結果」と表示しています。
さいごに
いかがでしたでしょうか。
今回は、サイト内検索結果のヒット件数を「全●件中●件目」と表示する方法を解説しました。
サイト内検索を実装する場合は、検索結果数などの表示は必須になってきますので、用途に合わせた表示方法を覚えておくと便利です。