【WordPress】濁点の有り無しでも検索結果にヒットしてしまう【検索機能】
公開日:2021年9月15日
2021年9月25日 更新
WordPressのデフォルト検索機能
WordPressのデフォルト検索機能で、ひらがなカタカナも同じ検索結果にヒットする。
便利やん、と思ったのも束の間、濁点・半濁点の有り無しも同じ検索結果にヒット「してしまう」。
そんな時の備忘録。
検索結果がどうもおかしい
今までWordPressのデフォルトである検索機能を使うテーマを作ったことが無かったので気づいたが、どうも検索結果がおかしい。
例えば「パンダ」でブログ内検索すると、「パンダ」も「はんだ」も「はんた」も含む記事がヒットする。
何故だ…
仕様だった
https://teratail.com/questions/70338
WordPress - ワードプレスサイト内検索「濁点、半濁点を分離」させたい|teratail
WordPressの開発が日本語圏ではないからか、各サイト参考にした時のインストール手順で諸々設定すると、MySQLの仕様上この現象が起こるようだ。もちろん、起こらないのであればそれで良いが、濁点・半濁点は流石に区別したい。
functions.phpに追記
function my_posts_where( $where, $obj ) { if ( $obj->is_search ) { $where = str_replace( 'LIKE', 'LIKE BINARY', $where ); } return $where; } add_filter( 'posts_where', 'my_posts_where', 10, 2 );
検索方式を「LIKE」から「LIKE BINARY」へ変更する。
これで濁点・半濁点も区別できるようになった。
ただし、ひらがな・カタカナに合わせて、英語も大文字小文字・全角半角が厳密に区別されるようにもなる。
この辺りは要件次第で。