Alexx The Rocks

雑記。

【WordPress】濁点の有り無しでも検索結果にヒットしてしまう【検索機能】

2021年9月25日 更新
Categoryweb制作
tag

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」へ変更する。
これで濁点・半濁点も区別できるようになった。

ただし、ひらがな・カタカナに合わせて、英語も大文字小文字・全角半角が厳密に区別されるようにもなる。
この辺りは要件次第で。