このカスタマイズを行う前に検索BOXの仕組みとは?を理解した上で行ってください。
ここでは下図の様にページの属性に沿った検索ができる様にカスタマイズします。
上記のどの検索ボックスを表示するか?はページ情報を読み込んで自動で判断させます。
尚、このカスタマイズは下記の設定が終わっている事を前提とします。
Welcart_basicのcategory.phpのカスタマイズ
1.子テーマに「search.php」を作成します
検索結果の表示には「search.php」が使われますが、このプログラムは「商品」だけを表示するプログラムとなっています。
そこで下記の方法で「製品」や「ブログ」等が表示できるプログラムを作成していきます。
1.search.phpの作成
Welcart_basicのcategory.phpのカスタマイズで作成した「category.php」をコピーし、名前を「search.php」に変更します。
これで「製品」も「ブログ」の表示できる基礎が出来上がりました。
2.検索結果が無かった時の処理を追加する。
①製品の検索ループの修正
<修正前>
<?php if (have_posts()) : ?> <!-- 商品の表示 --> <div class="cat-il type-grid"> 省略 </div><!-- .cat-il --> <?php endif; ?>
<修正後>
<?php if (have_posts()) : ?> <!-- 商品の表示 --> <div class="cat-il type-grid"> 省略 </div><!-- .cat-il --> <?php else: ?> <p><?php echo __('No posts found.', 'usces'); ?></p> <?php endif; ?>
赤字の部分を追加します
②ブログの検索ループの修正
修正方法は上記と同様です。
以上で「製品」でも「ブログ」等でも検索結果が表示できる様になりました。
2.検索フォームを作成する
1.プログラム
func¥welcart¥headerの下に「my_basic_searchform.php」というファイルを作成し、下記を追加します。
<?php /***************************************************************************** my_basic_searchformの設定 *******************************************************************************/ function my_basic_searchform() { list($slug,$name) = get_my_category(); ?> <i class="fa fa-search"></i> <form action="<?php echo home_url('/');?>" > <div class="s-box"> <?php if(is_my_item()):?> /* 商品の検索フォーム */ <input type='text' name='s' id='s' value='' class='search-text' placeholder='商品検索'> <input type='hidden' name='category_name' value='item'> <?php else:?> /* 商品以外の検索フォーム */ <input type='text' name='s' id='s' value='' class='search-text' placeholder=<?php echo $name.'検索';?>> <input type="hidden" name="category_name" value=<?php echo $slug;?>> <?php endif;?> <input type="submit" class="searchsubmit" value="" /> </div> </form> <?php } ?>
■虫眼鏡アイコンを表示する「<i class=”fa fa-search”></i>」は、本来、ここで使うべきものなので「header.php」から外して、ここに持ってきました。
■商品の検索は「valueをitem」にして、商品だけを検索しています。また検索ボックスのプレ表示は「商品検索」にしています。
■商品以外の検索は、「valueをカテゴリのスラッグ」にして、そのカテゴリの文書だけを検索しています。また検索ボックスのプレ表示は「カテゴリ名+検索」という文字列を表示しています。
■「s-box」クラスと「searchsubmit」は、welcart_basicのCSSに合わせました。
以上で形は「welcart_basic」のままで、「商品」や「ブログ」が各々検索できる様になりました。
2.プログラムのロード
functions.phpに上記関数の読み込みを記述します。
/* 検索フォーム関数の追加 */ get_template_part('func/welcart/header/my_searchform');
以上でそれぞれのカテゴリの中だけを検索する仕組みが出来上がりました。
3.header.phpの修正
最後に子テーマの「header.php」を変更します。
上記ファイルが無い場合は、親テーマからコピーして下さい。
<変更前>
<div class="search-box">
<i class="fa fa-search"></i>
<?php get_head_search_form(); ?>
</div>
<変更後>
<div class="search-box">
<?php my_basic_searchform();?>
</div>
以上で完了です。