WordPressのget_search_form()を使ったサイト内検索フォームの表示方法

公開日 :

最終更新日 :

カテゴリー :

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)
引数名 説明 デフォルト 必須
$echo 検索フォームの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.phpfunction 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()を使うことで簡単にオリジナルのサイト内検索が有効になるので使えるところで使いましょう。

+1 Pocket はてブ!
© 2012 - 2018 SAMURAI PROJECT Proudly powered by WordPress