SQL文で直接データベースにアクセスを行う
前回残した以上のハックではSQL文そのものに触れたので、今回のハックではどのように実際データを取得するのかについて残したいと思います。ここでSQL文でWordpressのデータベースにアクセスするときに大切な存在が$wpdbです。実際のサンプルコードは、以下です。
// $wpdbの準備 global $wpdb; //クエリと出力型の設定 $sql = 'SELECT post_status AS status FROM $wpdb->posts'; $output_type = 'ARRAY_A'; //データの取得 $results = $wpdb->get_results($sql, $output_type);
以上のコードで簡単にデータを取得することが可能です。ポイントとしては以下の3点があげられます。
1. $wpdbの準備をわすれない!
これがないと、どんなに頑張ってもエラーしか出ません。
2. データベースの名前に注意!
前回残したハックでSQL文のデータベース名は、wp_postsやwp_postmetaとなっていたのですが、実際に$wpdbを扱うときには wp_post→$wpdb->posts wp_postmeta→$wpdb->postmeta のようにwp_の接尾語を$wpdb->のあとに記述してあげるようにします。
3. 出力型を指定しよう!
get_results()の第二引数は、任意なのですが絶対指定しておいたほうが良いです。というのも、 get_results()の初期出力型はobject型だからです。僕は、PHPのオブジェクトはかなり扱いたくないと思ったので$output_typeをARRAY_Aと指定し、出力を連想配列にしました。$output_typeは、OBJECT ARRAY_A ARRAY_Nの3種類あって、それぞれ オブジェクト 連想配列 インデックス配列に対応しています。