WordPress $wpdbでデータベースを扱う

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種類あって、それぞれ オブジェクト 連想配列 インデックス配列に対応しています。