WordPressにてHTTPS対応をしたあとにサイト内検索機能が文字化けしてしまい、検索が効かなくなってしまいました。
色々調べてみましたが、同事象が発生している記事を見かけなかったので備忘録で残しておきたいと思います。
検索した際のURL
https://hogehoge.com/?s=%25E3%2583%2586%25E3%2582%25B9%25E3%2583%2588
この状態ですと実際に検索に使用される文字も「%25E3%2583%2586%25E3%2582%25B9%25E3%2583%2588」が使われてしまいどの記事にもひっかからなくなってしまいました。
そこで、以下を修正して対応しました。
wp-includes/query.php
protected function parse_search( &$q ) {
global $wpdb;
$search = '';
// ここを追記! urldecodeすることでパーセントエンコード?された文字列を復元
$q['s'] = urldecode($q['s']);
$q['s'] = stripslashes( $q['s'] );
if ( empty( $_GET['s'] ) && $this->is_main_query() )
$q['s'] = urldecode( $q['s'] );
〜〜〜〜
}
WordPressの内部をいじっているため、これが正解だとは思いませんが、他に対応方法がわからないため当面はこれで運用していきたいと思います。
もし他に良い解決策を知っている方いらっしゃいましたらコメントくださいませ!