一括検索機能を使えば、ローカルサイトはもちろんあらかじめ指定された情報提供サービス上で何でも簡単に検索できます。
一括検索の使い方
使い方はとても簡単です。WordPress の管理画面に入り、管理バー (ページ上部右端のユーザーメニュー外側) の検索欄または「Jetpack → 一括検索」 から検索するだけです。WordPress 管理バー検索欄での一括検索機能が検索するのは、ご自身のサイトのバックエンド部分のみです。フロントエンド部分ではすでにある検索フィールドをご使用ください。
検索結果セクションを追加する
一括検索に新たな検索結果セクションを追加するのはとても簡単です。一番基本的な方法は以下のとおりです。
add_filter( 'omnisearch_results', 'my_omnisearch_results', 10, 2 ); function my_omnisearch_results( $results, $search_term ) { $html = '<h2>My Omnisearch Results</h2>'; $html .= '<p>You just searched for <em>' . esc_html( $search_term ) . '</em>!</p>'; $results['My Results'] = $html; return $results; }
以下の点にご注意ください。
- フィルターに渡される内容は2つです。1つ目は配列で、お手元の検索結果をそこに追加します。2つ目は検索文字列です。ユーザーが入力する文字については必ずエスケープ処理をしてください。
- 検索結果の HTML を割り当てる配列キー (上記では
'My Results'
) は、ページ上部にある「移動」リンクの作成に使われます。なお、検索結果にちなんだ ID の作成にも使用しますので、他と重複しないように気を付けてください。 - HTML はお好みに合わせて自由に変更可能です。私たちは
WP_List_Tables
を使ってコンテンツを生成していますが、検索結果を表示する良い案が他にあれば自由にお試しください。 - 最大検索結果数を他と合わせたい場合は、
apply_filters( 'omnisearch_num_results', 5 );
をお使いください。 omnisearch_num_results
フィルターを使うと、各モジュールの最大検索結果数を無効にできます。- 時間のかかる検索 (例えば外部 API の検索など) には、AJAX 経由で検索結果を読み込むとよいかもしれません。
search_term
およびnum_results
のグローバルを JavaScript ですでに設定しており、Jetpack_Omnisearch_Plugins
クラスに AJAX 経由で検索結果を読み込んだ例がこちらでご覧いただけます。