functions.phpを編集してカスタム投稿タイプを検索結果に含める
WordPressのサイト内検索で、検索結果にカスタム投稿タイプを含める一番簡単な方法は、GitHubで紹介されている下記のコードをfunctions.phpに追記することです。プラグインは不要です。
上記が上手く機能しない場合は、こちらのサイトも参考にしてください。
How to add search functionality on custom post type in WordPress (Stack overflow )
How to include Custom Post Type in WordPress Search Result? (by DHIREN PATEL)
Qiitaでも同様の方法が紹介されています。
LION MEDIA、LION BLOGを使用している場合
無料テーマ・テンプレート LION MEDIA や LION BLOG を使用している場合、親テーマのfunctions.php から、下記の部分をコメントアウトするか、削除して下さい。
テーマ・カスタマイザーの「検索機能の検索対象」の機能をコントロールしているコードです。
この記述がある限り、上記のコードを追記しても正しく動作しません。
//////////////////////////////////////////////////
//検索対象をPOSTに限定
//////////////////////////////////////////////////
function fit_search_filter($search) {
if ( get_option('fit_theme_search') == 'value2' ) {
if(is_search()) {
$search .= " AND post_type = 'post'";
}
return $search;
}elseif ( get_option('fit_theme_search') == 'value3' ) {
if(is_search()) {
$search .= " AND post_type = 'page'";
}
return $search;
}else{
if(is_search()) {
$search .= " AND (post_type = 'post' OR post_type='page')";
}
return $search;
}
}
add_filter('posts_search', 'fit_search_filter');
なお、検索対象を、カテゴリー、タグ、抜粋など、幅広く設定したい場合は、プラグインが便利です。
プラグイン『WP Extended Search』を使う
functions.phpの直接編集が不安な方、タクソノミーなども含めて全文検索を可能にするなら、プラグイン『WP Extended Search』がおすすめ。
同様の全文検索プラグインといえば『Search Everything』が有名で、こちらはコメントや抜粋、下書きやカスタムフィールドまで検索可能ですが、あまりに検索対象を広げると、関連のない投稿までずらずら表示されて、かえって訪問者の負担になるので、単純に記事に絞り込んで横断検索するなら、WP Extended Searchの方が軽くて便利です。
https://ja.wordpress.org/plugins/wp-extended-search/
検索対象の設定
・ タイトルのみ、コンテンツのみ
・ タイトル+コンテンツ(全文)
・ メタキー
・ カテゴリー
・ タグ(タクソノミー)
・ カスタム投稿タイプ
検索条件の設定
General Search Setting
検索対象を設定。タイトルのみ、コンテンツのみ、タイトル+コンテンツは好みで。
Select Meta Key Names
検索対象に含めたいメタキーの名前を選択。カスタムフィールドに商品名などを設定されている方は便利ですね。
Select Taxonomies
検索対象に含めたいタクソノミー名を選択。タクソノミーのアーカイブではなく、指定したタクソノミーを有する記事が対象になります。
Select Post Types
検索対象に含めたいカスタム投稿タイプを選択。
Author Setting
検索対象に著者を含めたい場合は、チェックをONに。複数で運営しているサイト向け。
Terms Relation Type
複数の単語を入力した場合、AND検索か、OR検索か、選択できます。
Select date to exclude older results
検索対象に含める日時を限定する場合、
膨大なアーカイブを有して、数年前の記事は検索対象から外したい場合に便利。
Posts per page
1ページに何件の検索結果を表示するか。空欄の場合、デフォルトのアーカイブの件数が表示されます。
こんなサイトには不向きです
・ 複数管理で、膨大な記事数を有する
(かなり正確に全文検索するので、検索語によっては、ものすごい数の結果が表示される)
・ パスワード保護、非公開、メンバーオンリーなど、各記事に細かなアクセス制限が設定されている。
(記事IDで除外する機能がないので、複雑なサイトには不向き。
・ サイト内検索の数が多い
(一日に何百回とサイト内検索される大規模サイトには不向き)
このプラグインは、どちらかといえば、個人サイト向けです。
大規模サイトなら、Ajaxを使ったライブサーチ系のプラグインをおすすめします。
Googleの検索窓のように、検索語を入力したら、その場でサーチを開始し、その他の候補も表示します。
こちらも上記と同様、入力と同時に検索を開始し、その他の候補を一覧表示してくれる高機能な検索ツールです。
Ajax系は、一日に何十~何百回とサイト内検索されるメガサイトや商用サイト向きですね。
個人には過剰かもしれません。
Ajax系ではないですが、あいまい検索、マルチサイト横断など、さらに細かなカスタマイズが必要なら、『Relevanssi – A Better Search』がおすすめ。
有料版なら、PDFドキュメント、ユーザープロフィール、サジェスト機能、など、さらに機能拡張が可能です。
Googleカスタム検索のボックスを設置する
サイト内にGoogle検索を導入したい方は、『WP Google Search』がおすすめ。
IDを取得するだけで、ウィジェットで簡単に検索ボックスを設置できます。
設定画面にもリンクが表記されていますが、こちらからアクセスして、『新しい検索エンジン』を追加します。
サイト内検索にフォーカスする場合は、自サイトのドメインを入力します。
検索エンジンIDを取得します。ずらずらと英数字で生成されます。
プラグインの設定画面に戻って、検索エンジンIDを入力。
必要なオプションにチェックを入れます。
CSSのデフォルト修正は、自サイトでどのように表示されるか確認しながら調整して下さい。
あとは、フッターやサイドバーなど、必要な場所にウィジェットを挿入するだけです。
プラグイン『Widget Option』を併用すれば、必要なページにだけ検索ボックスを表示することができるので、ページ読み込みの負担を減らすことができます。
実際の動作については、当サイトのフッター、もしくはトップページに設置しているGoogleカスタム検索を試して下さい。
※ Googleカスタム検索ボックスは、プラグインを使わなくても、Googleの生成する埋め込みコードをコピペすれば好きな場所に設置できるのですが、お使いのテーマ・テンプレートによってはデザインが大きく崩れたり、scriptが上手く動作しなかったり、狙い通りにいかないこともありますので、楽に、綺麗に、カスタム検索ボックスを設置したい方におすすめです。
THE Thorのヘッダーの検索ボックスを削除する
テーマテンプレート『THE THOR』で、ヘッダーの検索ボックスが邪魔に感じている方は、header.php から form ごと、ばさっと削除すれば消えます。
div class="searchHead__search の続き、 <form>~</form> で囲まれた部分です。
精度がいい加減で、まったく検索の役に立たないので、削除したい方は試してみて下さい。
消しても、特に問題はないです。