search.phpの作り方とコード例

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件だった場合は、再度検索フォームを表示するなどして再検索を促すのも定番です。

参考にしてみてください。