質問: ### 前提・実現したいこと WordPressでサイトを作成しています。 プログラムの知識はほぼない素人なのですが、 どうしてもここだけは改変したい・・・という点があり悩んでいます。 現在、デフォルトの機能を使って、検索フォームを設置しています。 検索対象はすべて人名で、姓と名の間には、半角スペースが入っています。 姓と名を半角スペースで区切って入力すると、姓名バラバラでAND検索します。 その結果、まったく違うものもヒットします。 かといって、半角スペースを入れなければ、当然何もヒットしません。 本文中の半角スペースを無視して連結し、 該当の人名だけをヒットさせる方法はありますか? ### 試したこと 検索すると、str_replaceという関数を使う例が多数あるのですが、 置換して出力ではなく、検索するときだけ無視する、という 参考になるものがなかなか見つかりません。
回答: こんにちは。wordpressの検索についてはもともとand検索が 広くヒットする仕様だったと記憶しております。 厳密にand検索を実装するとするとWP_Queryで タグやカテゴリ機能もしくはカスタムフィールドなどを含めて 実装する方法でしょうか。 ちなみに検索対象は投稿もしくはカスタムポストの本文に書かれている前提で考えてみましたが こちらはあっていますでしょうか。 str_replaceという関数はphpのものである文字列のデータの中から検索するというものになります。 半角スペースを無視するという方向で考えると正規表現などで半角スペースを除去し~~~ という流れになりますが、氏名の場合、苗字と名前を判別するのはかなり難易度が高いと思います。 (苗字のような名前の人が実在しますのでここを判別するのはビックデータや人工知能系を絡めて精度を上げるしかない気がします) これがカスタムフィールドで氏名を管理していればスペースを除くだけなのでいけそうな気もします。 ですので管理する方向から考えていったほうがいいような感じがします。 wordpressのデータベースを簡単に検索置換できるプラグインもありますので バックアップを取ったうえで どのように運用するかを含めて使ってみてはいかがでしょうか。 https://www.adminweb.jp/wordpress-plugin/list/index27.html