WordPressでwpdbを使って「あいまい検索(LIKE演算子)」を実装する時に注意したこと

例えば「テーブルA」に格納されているデータに対して、wpdbを使って検索フォームに入力された文字列に合致した結果を出力したくなりました。その時、検索の柔軟性を持たせるために、「あいまい検索(LIKE演算子)」ができるように実装したかったんですが、少し手間取りましたのでメモ書きました。

wpdbを使って「あいまい検索」

まずは「あいまい検索」とは何かを確認します。

あいまい検索とは

例えば、データベースの検索言語であるSQLでは、LIKE文を用いて、検索対象文字列が部分一致するようなレコード抽出することができる。

(引用:あいまい検索とは 「曖昧検索」 (fuzzy string searching) あいまいけんさく: – IT用語辞典バイナリ

というわけで、今回やりたいことそのものでした。

WordPressのwpdbを使って「あいまい検索」を実装

例えば、テーマフォルダ内に検索結果表示用の「search.php」ファイルを作って、以下のようなコードを書きます。

サンプル

$search_query = get_search_query(); //検索フレーズを取得
$data_search = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM テーブルA where Title LIKE \"%%$search_query%%\"" ) );

やっていること

WordPressの検索フォームから入力された検索フレーズを「get_search_query()」で取得、変数「$search_query」に格納しています。「テーブルA」に格納されているTitleフィールドの値に対して、あいまい検索(LIKE演算子)。「%%$search_query%%」と書いてあげればOKでした。「%を二つ重ねる」ところが重要ですね。通常のMySQLでクエリを発行する場合ですと「%検索フレーズ%」でOKだと思うので、これはWordPress特有のことなのかな。

参考リンク

大変助かりました。ありがとうございます!

【WP】$wpdb->prepare内のSQL文にワイルドカード【LIKE %】を使用する場合。Wordpress : 僕の私の備忘録

著者:bouya Imamura