以前、真木さんからデータベースのテーブルを追加するのはあまりおすすめしないと言われたのだが、データ数と利便性を考えてWordPressのデータベースに自作のテーブルを追加することにした。
というのも、先日開催されたWordCamp Tokyo2011に、kmikage氏とbluemoon氏にくっついて放送部としてお手伝いさせていただいたのだが、会場リーダーをつとめられた西川さんから”$wpdbがいいらしい”というお話をいただき、これを使えばデータベースを直接いじることのリスクは下がる(あくまで下がる)という理解でさっそく使ってみることにした。
で、まずはテストとして、wp_testというテーブルをつくり記事ページに下記のコードを記載してみた。
$posts = $wpdb->get_results(“SELECT * FROM $wpdb->test”);
var_dump($posts);
結果
うーん、
これはテーブルが悪いのかと思いチェックしてみると
なるほど、データベースの種別がMyISAMになっていないのと照合順序がおかしい。そりゃでないはずだよね。でも、ここを直せばばっちりでしょ!などと言いながら、訂正してブラウザをどや顔しながらリロード。
その後、ファイル名をいろいろ変えてチャレンジするもうまくいかず。で、試しにwp_usersをコピーしwp_copyusersとして同じようにしても表示されないのを確認。そこではじめて、どっかでテーブル名を宣言している可能性を考える。検索してみると、
[WordPress] カスタマイズした wpdb クラスを使用する方法 | Sun Limited Mt.
どうも、ここらへんな感じ。
wp-includes/wp-db.phpを開いてusersが宣言されている箇所を発見
ここに、’copyusers’と記入
で、ブラウザリロードしたところ無事にwp_copyusersのテーブルを表示することができた。で、先ほどのSun Limited Mt.さんのサイトは直接wp-db.phpをいじらずに自作テーブルにアプローチする方法だったと理解。なるほど!
先ほどはusersだったので、$global_tablesだったけど、マルチサイトで使うデータでなければこっちの$tablesでよさそう。
ということで、自作テーブルにアクセスできるようになったので、実装すすみます。