WordPressのサイト内検索でヒットしない?カタカナや半角数字の区別なし・固定ページ除外の方法

WordPressでブログを運営している人なら、きっと自分のブログに検索機能をつけている人は多いでしょう。

その検索窓からキーワードで検索すると、そのキーワードにマッチした記事が検索結果として出てきますよね。

しかし、「書いたはずの記事が出てこない・・」といったことはありませんか?

「サイト内検索でヒットしない」という経験は、誰もが一度はあるかもしれませんね。私も昔はよくありました。

その原因は、とっても簡単なことでした。

それは、「カタカナ」や「ひらがな」が区別されていたり、「半角数字」と「全角数字」が区別されていたり、「半角カナ」と「全角カナ」が区別されており、検索結果がヒットしない。といった場合があるからです。

そこで今回は、WordPressのサイト内検索のカスタマイズについてプラグインなしの方法をご紹介します。

今回のサイト内検索機能のカスタマイズ内容

みっぴー

今回のカスタマイズでこんな事が出来るようになるよ!

今回のサイト内検索機能のカスタマイズ内容をまとめると下記の通りです。

サイト内検索機能のカスタマイズ内容
  1. 「ひらがな」と「カタカナ」の区別なし
  2. 「半角数字」と「全角数字」の区別なし
  3. 「半角カナ」と「全角カナ」の区別なし
  4. 検索結果に固定ページを除外

修正するファイル

今回のカスタマイズで編集するファイルは下記の通りです。

このカスタマイズで修正するファイル
  1. functions.php
注意
functions.phpのファイルを編集する場合は、必ずバックアップを取った上で編集してください。functions.phpの記入を誤るとブログの画面が真っ白になって管理画面にさえも入れなくなります。編集は慎重に行ってください。万が一、真っ白になった場合は「[WordPress]functions.phpを編集後に画面が真っ白になった時の対処法と注意点」を参考にしてください。

[WordPress]functions.phpを編集後に画面が真っ白になった時の対処法と注意点

検索のカスタマイズ

ブログ内で検索する時に、「ワードプレス」を「わーどぷれす」と『ひらがな』で入力してしまうと出てこない可能性があります。

みっぴー

テーマによっては、設定されている場合もあるので何もしなくても出てくる場合もあり?その辺は細かくは不明ですが・・・
とりあえず、SANGOは出てこなかったよ!

ぱん猫

そうなると、検索してくれた方に、せっかくのあなたの記事を見つけてもらえないかもしれません。

また、検索結果に「固定ページ」が含まれてしまって、見てほしい記事が後ろのほうにいってしまうのも勿体ないですよね。


なので、「ひらがな」と「カタカナ」、「半角カナ」と「全角カナ」、「全角英数」と「半角英数」を区別しないで、検索結果を返すカスタマイズと、検索結果に固定ページを含めないカスタマイズを紹介します。

【大注目の新テーマ】

ひらがなやカタカナなどを区別しないカスタマイズ

方法は、簡単です。下記のコードをfunctions.phpに追加するだけです。

functions.php
//検索結果のカスタマイズ(ひらがな、カタカナ区別なし)
function change_search_char($where, $obj) {
  if ($obj->is_search) {
    $where = str_replace(".post_title", ".post_title COLLATE utf8_unicode_ci", $where );
    $where = str_replace(".post_content", ".post_content COLLATE utf8_unicode_ci", $where );
  }
  return $where;
}
add_filter( 'posts_where', 'change_search_char', 10, 2 );
参考 WordPress検索でカタカナとひらがなを同じように検索できるようにするゆうそうとITブログ

検索結果から固定ページを除外するカスタマイズ

検索結果から固定ページを除外するには、下記のコードをfunctions.phpに追加してください。

functions.php
//検索結果から固定ページ除外
function custom_search_result($query) {
  if(!$query->is_admin && $query->is_main_query() && $query->is_search) {
    $query->set('post_type', 'post');
  }
  return $query;
}
add_filter('pre_get_posts','custom_search_result');
参考 【WordPressの「検索結果を投稿だけ」表示させる】「pre_get_posts」を使ってCodexのコードをこう書くと問題を回避できます今村だけがよくわかるブログ

最後に

検索結果は、意外にも見落としがちなところかもしれませんね。

一度、自分のブログでも確認してみてください(^^♪

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です