search.phpは、WordPressで検索結果を表示するためのテンプレートファイルです。
ファイルの役割や作り方について解説していきます。
search.phpとは
search.phpは、WordPressの検索フォームでサイト内検索がおこなわれた際に表示されるページテンプレートです。
検索結果の有無や、該当する記事の件数なども取得できて動的に画面に表示できます。
searchform.phpとの違い
似た名前のテンプレートにsearchform.phpがあります。searchform.phpは検索フォームのテンプレートファイルになっていますので、要するにセットで使うことになります。
- search.php:searchform.phpによって検索された際に、検索結果画面として呼び出される
- searchform.php:検索フォームのテンプレート。get_search_form()関数で呼び出した場所に検索フォームを表示できる。
ちなみにsearchform.phpは必須ではなく、作成しない場合はデフォルトの検索フォームが表示されます。
search.phpの作り方
search.phpは、テーマファイル直下に設置することで、サイト内検索の結果を表示する際に自動的に呼び出されます。
/wp-content/themes/テーマフォルダ/search.php
名称は固定ですので、search.phpから変えられません。
search.phpのサンプルコード
当テーマDAWNYでは、search.phpを下記の通り実装しています。
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
get_header();
?>
<article>
<section class="search-header-container">
<h1 class="search-title">
<?php printf( esc_html__( '「%s」'), get_search_query() ); ?>
</h1>
<div class="search-description">
<?php
// 検索結果があるか確認
if ( have_posts() ) :
printf( esc_html__( '%s 件見つかりました。'), $wp_query->found_posts );
else :
esc_html_e( '0件でした。他のキーワードで検索してください。');
endif;
?>
</div>
</section>
<section>
<?php if ( have_posts() ) : ?>
<?php include_once get_template_directory() . '/template/article-list.php'; ?>
<?php else : ?>
<div class="no-results">
<?php get_search_form(); ?>
</div>
<?php endif; ?>
</section>
</article>
<?php
get_footer();
?>
基本的には、下記の要素で構成されることが多いかと思います。
- ヘッダーパーツの呼び出し
- 検索結果の件数の表示
- 検索結果の記事一覧の表示
- フッターの呼び出し
検索結果が0件だった場合は、再度検索フォームを表示するなどして再検索を促すのも定番です。
参考にしてみてください。