【WordPressのデータベース(DB)を操作したいので初めの一歩から勉強して理解しています】

ところでですが、MySQL,PostgreSQL,oracleなどのDBMSは、これまで一通り触ってきました。ですので、初歩的な予備知識はあると思っています。が、私個人的にWordPressに関しては、「WordPressを構成してるデータベース(DB)の理解」をしないと、うまく扱えない。前に進めないな、と感じています。

当たり前かもしれないですけども・・・

WordPressのDBに関する理解

私の現状の理解は、

  • WordPressはDBMSとしてMySQLを採用していて、
  • インストール時に決めたDBに、WordPressを構成するテーブルを作成する
  • codexのサンプルコードを参考に、ちょっとだけDBの値を引っ張ってくる程度

ってくらいです。

あ、あとWordPressインストール時に作られるテーブル名も、前回調べました。(昔PostgreSQLで構築する方法もあるのはどこかで見たけど、そこは今回は考慮しない)

というわけで、以上の理解からがスタートラインで、Codexの「関数リファレンス/wpdb Class」を参考にしながら、自分で文字にして書く。書いて覚えるって感じです。それで、後で見直して理解できればOKな記事にしたいと思っています。

まさに、このブログタイトル通り!

今年はやる。WordPressのDBをうまく扱えるようになる。気合はあります。

一度にたくさん理解するのは難しいので、まずは大枠から

・・・いくら「気合がある」とは言っても、それだけではだめですね。そもそも、ほとんど何もわからない状態ですので、ここは大ざっぱに行こう。

「WordPressのDBを扱うにはどうしたらいいんだろう?」

と、このあたりの疑問から少しずつ学んでいこうと思います。

長い前置きはここまででして、ここから以下が本題です。

WordPress には、既にデータベースを操作できる準備は整っている

WordPressでデータベースを使う(操作する)ためにはどうすればいいのか。

頼みはやっぱりCodexでして、以下引用の部分はすべてCodexの「関数リファレンス/wpdb Class」からのものです。

WordPress にはデータベース操作用のクラス関数が用意されています。

このクラスは wpdb と呼ばれており、大まかな部分では ジャスティン・ヴィンセント氏が作成し、

管理している ezSQL クラスに基づいています。

データベースを使う(操作する)ためのクラスがすでに存在しているんですね。「wpdb」って呼ばれているのか。なるほどなるほど。

wpdbの使い方

「 じゃあ、そのwpdbってのを具体的にどうすればいいのよ?」と私は思いましたね。下記を読んでみましょう~。

wpdb クラスのメソッドは、直接呼び出すべきではありません。

WordPress にはデータベースと対話するために設定されたクラスをインスタンス化した

$wpdb というグローバル変数があります。常に、このグローバル変数 $wpdb を使うようにしましょう

($wpdb をカスタム関数の中で使う前に、グローバル宣言を忘れないようにしましょう)。

wpdbは直接呼び出す(使う)のではなくて、グローバル変数$wbdbってのがあります。これをつかってデータベースを操作すればいいんですね。例えばオレオレ関数で$wpdbを使う場合は、グローバル宣言をすることが必要・・・と。

なるほどなるほど。

そしたら、オレオレ関数でグローバル宣言をする場合の一例は、こんな感じですかね。

【オレオレ関数でグローバル宣言】

<?php
function OreOre() {
 global $wpdb; //オレオレ関数の中でグローバル宣言をする
 /*データベース操作などの処理を書く*/
}
?>

「$wpdb」を使ってデータベースを操作するには

$wpdbを使うためのルールというか、前置きのようなことは理解できました。「じゃあ$wpdbを具体的にどうやって使うの?」ってことを下を読んで理解します。

$wpdb オブジェクトは WordPress データベースにあるすべてのテーブルから

データを読み出すために利用できます。

これには、WordPress が標準で作成する以外のテーブルも含まれます。

例えば、”mytable” というカスタムテーブルから情報を SELECT するには、以下のようにします。

$myrows = $wpdb->get_results( "SELECT id, name FROM mytable" );

サンプルコード付きで嬉しいですね。えーと・・・WordPressをインストールすると初めに作成されたテーブルもですけど、プラグインやテーマなどを有効化(インストール)した過程で作られたテーブルなども、操作できるということですかね。

サンプルコードでは、テーブル名「mytable」をSELECT(選択)していますね。

なるほど。

「$wpdb」が接続できるのは1つのWordPress用データベース

接続について、注意することがあるようです。

 $wpdb オブジェクトは好きな数のテーブルを操作できますが、

接続できるのは1つのデータベースだけです (WordPress 用のデータベース)。

もし他のデータベースに接続したいという珍しいケースの場合は、

適切な接続情報を使って wpdb クラスから独自のオブジェクトをインスタンス化する必要があります。

複数のデータベースを使った非常に複雑な構成の場合は、hyperdb の利用を検討してみてください。

うーむ・・・「WordPress用のデータベース」の定義がよくわからないですね。これは、WordPressをインストールしたときに設定したデータベースって理解でいいのでしょうかね。

そしたら、例えば私の場合は1つのサーバで複数のWordPress用データベースを作って、複数サイトを運営しているのですが、DB間(サイト間)を跨いでも接続出来たりできるんでしょうかね。接頭辞が違うDB間って意味で…これは、やってみないとわからないので今後の課題にしておこうと思います。

あと気になったのは、他のデータベースに接続したいというケースは、そんなに珍しいとは思わないですね・・・私は結構思いつきます。WordPressを使って、他のシステムのDBに接続して値を引っ張って紐付する・・・とか。ここも、実践あるのみですね。やらないとわからないですね。やること多い!

まとめ

というわけで、今回はここまでです。今回書いた内容は、Codexの「関数リファレンス/wpdb Class」では数行程度の解説にあたる部分なんですが、この数行をおおよそ理解するまでに、これくらいの文字数がかかりましたねw

解説を読んでも、自分の中で書いてある内容を消化させることは、とても大変だなぁと改めて感じます。

次回からは、もっと実践的なサンプルコードなどをバンバン交えて理解していきます。もしこれから、WordPressのDBを操作してあんなことやこんなことをしたいけど、まずはじめの一歩がわからん。なんて方もいらっしゃるんじゃないかと思います。

この記事のどこか一文でも、何かのヒントやきっかけとなりましたら幸いです。

下の記事も書きましたので、併せてご参考いただけますと、もっと幸いです。

【WordPressのデータベースを操作する前に「SQL」「クエリ」について】ちょっとだけ書きました

【WordPressのデータベースから、投稿に関するデータを取得して表示するサンプルコード】特定の条件を付けることもできる

著者:bouya Imamura