WordPressにページ内検索を追加する

最近になってようやく仕組みがわかってきたので、ページ内検索を追加してみました。
(検索フォーム自体に需要があるかはわかりませんが、私自身がよく使うものでもありますので、導入…)

導入時のバージョン:Wordpress 3.3.1

テンプレートに最低限のphpファイルしか導入していなかったため、ファイルの作成手順をメモ。

sidebar.php

今回は右のサイドバーに挿入してみました。

<?php get_search_form(); ?>

以下はカスタマイズの必要あれば。
なくても自動でwp-includesにあるテンプレートを読み込んでくれるようです。
参考:Creating a Search Page – WordPress Codex 日本語版

今回はcodexを基にファイルを追加してみました。

searchform.php(検索フォームの表示)

こちらは「wp-includes」のテンプレートより改良。

  • submitボタンを画像に変更。
<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">
	<div>
		<input type="text" value="" name="s" id="s">
		<input type="image" id="searchsubmit" src="<?php bloginfo('template_url'); ?>/images/bn_search.gif" value="検索">
	</div>
</form>

search.php(検索結果画面の表示)

  • 検索ワード・検索結果件数の表示
  • if~elseによる条件分岐
  • <?php if(have_posts()): ?>
    	<h3 class="subtitle">「<?php the_search_query(); ?>」の検索結果:<?php echo $wp_query->found_posts; ?>件</h3>
    	<?php else : ?>
    	<h3 class="subtitle">「<?php the_search_query(); ?>」は見つかりませんでした。別のキーワードをお試しください。</h3>
    	<?php get_search_form(); ?>
    <?php endif; ?>

    検索結果

    検索結果が0件のとき

    タグ1つで検索フォームいれれるなんて、便利。