【WordPress】$wpdbで自作テーブルを扱う場合|wpdbクラスのカスタマイズ

WordPressには、データベースを操作できるwpdbクラスがあります。

自作テーブルを扱う場合にはそのwpdbクラスをカスタマイズする必要がありますが、今回は、そのカスタマイズ例となります。

wpdbクラスをカスタマイズする方法

wpdbクラスでは、そのインスタンスとなるグローバル変数の$wpdbにアクセスすることで、データベースを扱えます。

wpdbクラスは、wp-includes/wp-db.phpファイルで定義されていますが、wpdbクラスをカスタマイズするには、wp-contentフォルダの直下にdb.phpファイルを作成します。

それにより、db.phpファイルが読み込まれるので、そのファイル内でwpdbクラスを継承したサブクラスを定義することで、wpdbクラスをカスタマイズできます。

$wpdbで自作テーブルを扱えるようにする例

以下、db.phpファイルに記述するコードの例となり、wpdbクラスを継承したサブクラスでプロパティをオーバーライドして、$wpdbオブジェクトで自作テーブルを扱えるようにしています。

class my_wpdb extends wpdb { 
    // プロパティ$tablesをオーバーライド
    var $tables = [
        'posts', 
        'comments', 
        'links', 
        'options', 
        'postmeta',
        'terms', 
        'term_taxonomy', 
        'term_relationships', 
        'termmeta', 
        'commentmeta' ,
        'sample_table' // 追加したテーブル
    ];
}
// my_wpdbクラスのインスタンスを$wpdbにセット
$wpdb = new my_wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);

クラスのオーバーライド(上書き)について

wpdbクラスはWordPressのバージョンによって変更される可能性もあるので、wpdbクラスを継承してカスタマイズする場合は、wpdbクラスが定義されている自身のwp-includes/wp-db.phpファイルを確認した上で、オーバーライド(上書き)してください。

自作テーブルを扱うwpdbクラスのカスタマイズについて

上記のwpdbクラスを継承したサブクラスmy_wpdbでは、wpdbクラスのプロパティ$tablesをオーバーライド(上書き)しています。

$tablesは配列となり、要素にはwpdbクラスで扱えるデフォルトのテーブルの一部が定義されていますが、その要素に作成したテーブル名を追加します。例ではテーブル名sample_tableを追加しています。

また、テーブル名はプレフィックス(接頭辞)なしで指定します。

そして、my_wpdbクラスのインスタンスを$wpdbにセットします。それにより、$wpdbのオブジェクトで自作テーブルを扱えるようになります。

テーブルからデータを取得する場合

wpdbクラスでデータベースからデータを取得する方法については、以下のリンク先を参考にしてみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。