WordPressにはWP_Queryクラスという強力なツールがあり、データベースにある全てのデータを自在に取得することができます。ユーザーを取得するならWP_User_Queryクラス、コメントを取得するならWP_Comment_Queryクラスなどの使い分けは必要ですが、基本的には、直接SQLを書く機会はないと言ってよいでしょう。
ただしCMSやWebアプリとしてWordPressを使う場合、時には直接SQLを書いたほうがパフォーマンスが良かったり、開発も速い場合があります。
たとえばECサイトをWooCommerceで開発していて、あるクーポンコードを利用した顧客の一覧を、管理画面に表示したいという場面を想定してみます。コードは下記のようになります。
このような機能は、もしかしたらWooCommerceの関数として用意されているのかもしれませんが、データベースの構造さえ分かっていれば自前で実装したほうが早い場合もあります。
wpdbでSELECTする方法としては、下記の3種類がよく利用されます。私はよく忘れてしまうため、備忘録として記します。
- $wpdb->get_results() …… 該当するデータ全件・全カラムを取得
- $wpdb->get_col() …… 該当するデータ全件からカラムを指定して取得
- $wpdb->get_row() …… 該当するデータ1件の全カラムを取得
私がよく使うのは、必要なカラムのみ取得する get_col() です。一方で get_row() はまだ使う機会がありません。
ここではSQLの書き方については特に解説はしませんが、一つだけ大事なことを書いておくと、ユーザーが入力したデータはSELECT / INSERT / UPDATEのいずれも$wpdbへ渡すのは避けたほうが無難です。基本的にはWordPressが用意している関数やクラスを利用し、どうしても必要な場合にはプリペアドステートメントを必ず利用してください。
株式会社トンボロでは、SQLをゴリゴリ書くようなWordPress/WooCommerceカスタマイズにも対応可能です。お困りの方はぜひお問い合わせフォームよりご連絡ください。