検索機能 プラグイン

カスタム投稿タイプやタクソノミーも 検索対象を拡張&カスタマイズ 『WP Extended Search』

カスタム投稿タイプを検索結果に含める一番簡単な方法

追記 2018年11月6日

WordPressのサイト内検索で、検索結果にカスタム投稿タイプを含める一番簡単な方法は、Qiita で紹介されている、下記のコードをfunctions.php に追記することです。プラグインは不要です。

【wordpress】サイト内検索でカスタム投稿を含める


function customSearcher($search, $wp_query) {
if ( $wp_query->is_main_query() && $wp_query->is_search() && !is_admin() ) {
$q = $wp_query->query_vars;
$n = null;
if (!empty($q['s'])) {

$keyword = mb_convert_kana($q['s'], 's');
$keywords = preg_split('/[\s]+/', $keyword, -1, PREG_SPLIT_NO_EMPTY);

foreach ($keywords as $word) {
$n = " OR ( pm.meta_key IN ( 'search_data' ) AND pm.meta_value LIKE '%" . $word . "%') ";

$search = str_replace( "post_content LIKE '%". $word . "%')", "post_content LIKE '%". $word . "%')" . $n , $search );
}

}

}
return $search;
}
add_filter('posts_search', 'customSearcher', 10, 2);

無料テーマ・テンプレート LION MEDIA や LION BLOG を使用している場合、親テーマのfunctions.php から、下記の部分をコメントアウトするか、削除して下さい。

テーマ・カスタマイザーの「検索機能の検索対象」の機能をコントロールしているコードです。
この記述がある限り、上記のコードを追記しても正しく動作しません。

LION MEDIA 検索結果のカスタマイズ


//////////////////////////////////////////////////
//検索対象を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');

なお、検索対象を、カテゴリー、タグ、抜粋など、幅広く設定したい場合は、プラグインが便利です。


WordPressのテーマ・テンプレート、厳密には、WordPressにデフォルトで備わっている検索機能には、カテゴリー、タグ、固定ページ、カスタム投稿タイプなど、全体をくまなく検索する機能がありません。Google Search のブログパーツ(カスタム検索)を埋め込むことも可能ですが、テーマ・テンプレートによっては格好よく収まらないことがありますね。

WordPressで、カスタム投稿タイプやタクソノミーを横断する全文検索を可能にするなら、プラグイン『WP Extended Search』がおすすめ。

同様の全文検索プラグインといえば『Search Everything』が有名で、こちらはコメントや抜粋、下書きやカスタムフィールドまで検索可能ですが、あまりに検索範囲を広げると、あまり関連のない結果までずらずら表示され、かえって訪問者の負担になるので、単純に記事に絞り込んで横断検索するなら、WP Extended Searchの方が軽くて便利です。

WP Extended Search
https://ja.wordpress.org/plugins/wp-extended-search/

検索対象

・ タイトルのみ、コンテンツのみ
・ タイトル+コンテンツ(全文)
・ メタキー
・ カテゴリー
・ タグ(タクソノミー)
・ カスタム投稿タイプ

検索の設定

General Search Setting
検索対象を設定。タイトルのみ、コンテンツのみ、タイトル+コンテンツは好みで。

Select Meta Key Names
検索対象に含めたいメタキーの名前を選択。カスタムフィールドに商品名などを設定されている方は便利ですね。
WP Extended Search 検索対象 設定

Select Taxonomies
検索対象に含めたいタクソノミー名を選択。タクソノミーのアーカイブではなく、指定したタクソノミーを有する記事が対象になります。
WP Extended Search 検索対象 設定 タクソノミー

Select Post Types
検索対象に含めたいカスタム投稿タイプを選択。
WP Extended Search 検索対象 設定  カスタム投稿タイプ

Author Setting
検索対象に著者を含めたい場合は、チェックをONに。複数で運営しているサイト向け。
WP Extended Search 検索対象 著者名

Terms Relation Type
複数の単語を入力した場合、AND検索か、OR検索か、選択できます。

Select date to exclude older results
検索対象に含める日時を限定する場合、
膨大なアーカイブを有して、数年前の記事は検索対象から外したい場合に便利。

Posts per page
1ページに何件の検索結果を表示するか。空欄の場合、デフォルトのアーカイブの件数が表示されます。
WP Extended Search 検索設定

こんなサイトには不向きです

・ 複数管理で、膨大な記事数を有する(かなり正確に全文検索するので、検索語によっては、ものすごい数の結果が表示される)
・ パスワード保護、非公開、メンバーオンリーなど、各記事に細かなアクセス制限が設定されている。
 (記事IDで除外する機能がないので、複雑なサイトには不向き。
・ サイト内検索の数が多い
 (一日に何百回とサイト内検索される大規模サイトには不向き)

このプラグインは、個人運営サイト向けです。

検索回数が一日数件~数十件程度で、あれこれプラグインを搭載して、サイトを重くしたくない場合に重宝します。

大規模サイトなら、Ajaxを使ったライブサーチ系のプラグインをおすすめします。

SearchWP Live Ajax Search
Googleの検索窓のように、検索語を入力したら、その場でサーチを開始し、その他の候補も表示します。

Ajax Search Lite
こちらも上記と同様、入力と同時に検索を開始し、その他の候補を一覧表示してくれる高機能な検索ツールです。

Ajax系は、一日に何十~何百回とサイト内検索されるメガサイトや商用サイト向きですね。

個人には過剰かもしれません。

Ajax系ではないですが、あいまい検索、マルチサイト横断など、さらに細かなカスタマイズが必要なら、こちらのプラグインがおすすめ。
有料版なら、PDFドキュメント、ユーザープロフィール、サジェスト機能、など、さらに機能拡張が可能です。
Relevanssi – A Better Search

Googleのカスタム検索も悪くはないですが、そうまでして探すのは、よほど目当てのものがあるからで、それなら検索窓に凝るより、「ピックアップ記事」や「タグリスト」で目立たせた方が分かりやすいと思います。

何にせよ、「サイト内検索」って、ウェブマスターにとっては結構嬉しいものなので(あ、そんなに関心もってくれたんだ、と)、機能を充実させるのはおすすめです。

広告

ライティングの最新記事4件

>海洋小説『曙光』MORGENROOD

海洋小説『曙光』MORGENROOD

ニムロディウムという架空の金属元素を中心に、鉱業、海底鉱物資源、深海調査、海洋情報ネットワーク、建築&デザインなどをテーマに描く人間ドラマ。水深3000メートルに眠るニムロディウムの採掘は世界を変えるのか。生の哲学を中心に海洋社会に生きる人々の願いと攻防を描きます。Google Driveにて無料サンプルPDFも配布中。

CTR IMG