WordPressの検索で「ひらがな」と「カタカナ」、「全角英数」と「半角英数」を区別しないでマッチさせる方法

WordPressの検索で「ひらがな」と「カタカナ」、「全角英数」と「半角英数」を区別しないでマッチさせる方法

Photo Cameron Kirby via Unsplash

WordPressのサイト内検索で「ひらがな」と「カタカナ」、「全角英数」と「半角英数」を区別しないでマッチさせる方法を紹介します。

例えば、検索キーワードに「トマト」を指定したときに「とまと」を含む投稿を検索結果に表示させることが可能です。

また、検索キーワードに「NEW」と全角で指定したときに半角の「NEW」を含む投稿を検索結果に表示させることが可能です。

実装は簡単です。下記のコードを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 );

これで、「ひらがな」と「カタカナ」、「全角英数」と「半角英数」を区別せずに検索することができます。