例えば「テーブル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 : 僕の私の備忘録
このページを共有する