プラグインの新規設置手順
※以下はFE Advanced Search 1.7とWordPress 4.9.8 に沿った説明です。
- ダウンロードまたはメールの添付ファイルを解凍し、FTPソフトウェア等で、設置先のサーバに接続します。
- 「fe-advanced-search」フォルダを以下の場所にアップロードします。
- WordPressを設置したフォルダ/wp-content/plugins/
- WordPressの管理画面にログインします。
- 「プラグイン」→「インストール済みプラグイン」を開きます。
- プラグイン一覧にある「FE Advanced Search」の「有効化」リンクをクリックします。
- 管理画面のサイドバー下方に「検索」という項目が現れていれば設置完了です。
検索フォームを設置
テンプレートに、FEAS用の検索フォームを設置
検索フォームを設置したいテンプレートの任意の場所に下記のように記述します。
<?php create_searchform(); ?>
検索条件を検索結果に表示
検索結果のページに、検索に用いた条件(カテゴリ、キーワード等)を列記するには下記のように記述します。
<?php search_result(); ?>
該当件数を表示
検索条件に該当する件数を表示するには下記のように記述します。
<?php feas_count_posts(); ?>
記述例
上記の関数を用いた記述例は以下のとおりです。
<div id="feas"> <div id="feas-form"> <?php create_searchform(); ?> </div> <div id="feas-result"> <?php if(is_search()){ ?> <?php if($add_where !=null || $w_keyword !=null): ?> 「<?php search_result(); ?>」の条件による検索結果 <?php feas_count_posts(); ?> 件 <?php else: ?> <h3>検索条件が指定されていません。</h3> <?php endif; ?> <?php } else { ?> 現在の登録件数:<?php feas_count_posts(); ?> 件 <?php } ?> </div> </div>
より安全な記述例(推奨)
下記の記述方法にすると、万が一プラグインを使用停止した場合にもエラーが出力されず、サイトの稼働に支障をきたしません。
<?php if(function_exists('create_searchform')){ ?> <div id="feas"> <div id="feas-form"> <?php create_searchform(); ?> </div> <div id="feas-result"> <?php if(is_search()){ ?> <?php if($add_where !=null || $w_keyword !=null): ?> 「<?php search_result(); ?>」の条件による検索結果 <?php feas_count_posts(); ?> 件 <?php else: ?> <h3>検索条件が指定されていません。</h3> <?php endif; ?> <?php } else { ?> 現在の登録件数:<?php feas_count_posts(); ?> 件 <?php } ?> </div> </div> <?php } ?>
検索条件を配列で返す
search_result()の代わりにsearch_result_array()を使うと、キーワードをカンマ区切りで画面出力する代わりに配列で取得できますので、ループで回しながら各キーワードにclassを付与するなど、独自のデザインが容易になります。
$query = search_result_array( 'all' ); if ( $query ) { $ret = ''; foreach ( $query as $q ) { if ( ! empty ( $ret ) ) $ret .= ' '; $ret .= '<span clas="query">' . esc_html( $q ) . '</span>'; } echo $ret; }
任意の記事(投稿/ページ)に検索フォームを挿入(ショートコードAPI)
- 管理画面>投稿>編集から、検索フォームを挿入した記事の「編集」または記事タイトルをクリック
- 記事本文の挿入したい箇所にカーソルを合わせ、
[create-searchform]
と記述します。 - 該当件数を表示する場合は
[feas_count_posts]
と記述します。 - 「投稿を更新」をクリックします。
新規作成の場合、「固定ページ」に挿入する場合も同様の手順です。
検索フォームを設置(複数対応)
前項の検索フォームの設置方法で、create_searchform関数の引数にフォームのidを与えます(例:フォームid=2の場合)。
<?php create_searchform( 2 ); ?>
該当件数を表示するfeas_count_posts関数も同様にフォームのidを与えます。
<?php feas_count_posts( 2 ); ?>
idの参照は、「検索」設定ページの右上のドロップダウン内、または「フォームID」欄をご参照ください。
ショートコードの場合も同様に、id属性に値を与えます。
[create-searchform id=1]
[feas-count-posts id=1]
いずれの場合も、値を省略した場合はid=0(最初に作成された検索フォーム)が表示されます。
検索結果をsearch.phpに返す
検索結果を正常に表示させるために、使用するテーマフォルダ内に「search.php」というテンプレートを設置して、その中に記事のループを設置してください。
もし、トップページ向けに「home.php」というテンプレートファイルが設置されていて、(トップページ用の専用デザインがされている等)記事一覧を表示するコードが記述されていない場合、検索にヒットした記事のリストを表示できない場合があります(検索結果は取得しますが、結果が表示されない状態)。
使用中のテーマフォルダ内に「search.php」というテンプレートが設置してあると、FEASの検索フォームが設置されたどのテンプレートから検索が実行された場合でも、検索結果は search.php へ返されます。必要に応じて検索フォームのコードをsearch.php内にも設置してください(設置されていなくても検索結果は表示されます) 。それ以外の場合は、下記の優先順位で検索結果が返されます(WordPressのテーマ構造/テンプレート階層に準じます)。
search.php > home.php > index.php
検索結果を検索フォームごとに、それぞれ別のテンプレートに返す
ポータルサイト等で、カテゴリ/コーナー毎にそれぞれ別の検索フォームを設置した場合、検索結果を表示するテンプレートも分けたい場合が多いと思います。その場合は、search.phpの中身を下記のように記述し【分岐専用】のファイルとします。それぞれの検索結果用のテンプレートを別途用意して読み込みます。各テンプレートの内容は通常のsearch.phpに準じた内容を記述してください。
<?php if( '0' == $_GET['fe_form_no'] ) { // フォームID=0から検索された場合 get_template_part( 'search', 'form0' ); //search-form0.phpを読み込む } elseif( '1' == $_GET['fe_form_no'] ) { // フォームID=1から検索された場合 get_template_part( 'search', 'form1' ); //search-form1.phpを読み込む } else { // それ以外(WordPress標準の検索窓など) get_template_part( 'archive' ); //archive.phpを読み込む } ?>
「search-form0.php」等は実際のファイル名に置き換えて下さい。