WordPressで検索フォームを表示するには、get_search_form()を使います。get_search_form()はただ検索フォームを表示するだけではなく、オリジナルの検索フォームをインクルードして表示することもできます。今回はget_search_form()の使い方やオリジナルの検索フォームを作成して表示するためのsearchform.phpについて紹介します。

get_search_form()について

get_search_form()は、WordPressで現在有効になっているWordPressテーマのテーマディレクトリの直下にあるsearchform.phpをインクルードします。

get_search_form()の仕様

get_search_form($echo);
引数説明デフォルト必須
$echoboolean検索フォームのString出力false

get_search_form()の使い方

get_search_form()の使い方は以下の通りです。

/* 検索フォームを出力する */
get_search_form();

/* 検索フォームを代入する */
$search_form = get_search_form(false);

get_search_form()の引数をtrueにするとsearchform.phpで取得してきたものをString変数として返します。基本的にget_search_form()を使用するときにStringで返してほしいことはあまりないと思うので引数はなにも指定せずに使うことがメインにでしょう。またget_search_form()を使っていて、有効になっているWordPressテーマのテーマディレクトリ直下にsearchform.phpがない場合はWordPress側で検索フォームを生成してページにインクルードされます。

serchform.phpについて

serchform.phpは、サイト内検索でつかうためのフォームを記述したテーマテンプレートになります。searchform.phpのサンプルは以下のような形です。

searchform.php
<form action="/" method="get">
  <div>
    <label for="search">Search in <?php bloginfo( 'name' ); ?></label>
    <input type="text" name="s" id="search" value="<?php the_search_query(); ?>" />
    <input type="image" alt="Search" src="<?php bloginfo( 'template_url' ); ?>/images/search.png" />
  </div>
</form>

searchform.phpには、以下の条件が必要になります。この条件がないとWordPressのサイト内検索が動かないです。

  • フォームのURLはホームURLにmethod属性をGETにする
  • テキストボックスのname属性はsにする

functions.phpに追加するやり方

searchform.phpを使う以外にもfunctions.phpの関数として検索フォームをフックして呼び出す方法があります。functions.phpに書くサンプルは以下のような形になります。

functions.php
function my_search_form( $form ) {
    $form = '<form role="search" method="get" id="searchform" action="'.home_url( '/' ).'" ><div><label class="screen-reader-text" for="s">' . __('Search for:') . '</label><input type="text" value="' . get_search_query() . '" name="s" id="s" /><input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" /></div></form>';
    return $form;
}
add_filter( 'get_search_form', 'my_search_form' );

関数として検索フォームを使う場合もsearchform.phpと同じ条件が必要です。

まとめ

get_search_form()は、オリジナルの検索フォームやWordPress標準の検索フォームを表示してWordPressのサイト内検索に有効にするための関数です。テーマ内の好きなところでget_search_form()を使うことで簡単にオリジナルのサイト内検索が有効になるので使えるところで使いましょう。