サイト内検索で複数キーワードを全角スペースで区切ると複数にならない【wordpress】

wordpress

wordpressはサイト内検索ができます。複数キーワードの検索もできます。
「癒やし」と「くま」の2語を入力すると、「癒やし くま」となります。

これで検索すると、検索結果は0件となります。
区切り文字が全角スペースだと「癒やし くま」という1単語と認識してしまうのです。
半角スペースじゃないと複数単語で検索してくれないんです。

しかし、複数キーワードを入力する時、google検索で慣れ親しんだ全角スペースで区切ると思います。どうすれば、全角スペースを入力しても複数キーワードの検索ができるようになるのか?

解決

pre_get_postsアクションフックで、全角スペースを半角スペースに文字列置き換えする

function change_posts_per_page($query) {
    if( is_admin() || ! $query->is_main_query() ){
        return;
    }

    if ($query->is_search()) {
        $query->set('post_type', 'post');
        //全角スペースを半角スペースに
        $s = $query->get( 's' );
        $s = str_replace(' ',' ', $s );
        $query->set( 's', $s );
    }
}
add_action( 'pre_get_posts', 'change_posts_per_page' );

pre_get_postsアクションフックを利用して、検索した時にstr_replaceで文字列置換します。

コメント

タイトルとURLをコピーしました