ティーエスフォートブログ

ブログネタに困るNo.2

「ブログネタに困る」以前社長の投稿にありましたが、なかなかネタになるような事もなく、
何を書こうか悩む日々です。

なので今回はちょっと技術ネタでも書いてみようかと思います。

WordPressで自分で作成したテーブルを$wpdbとして扱いたいって思ったことはないでしょうか?。
どうやればいいのかは検索すると色々出てきますが、やり方としてはwp-include/wp-db.phpの
tablesプロパティに追加って云うのが手っ取り早いです。
ただここで問題になるのがWordPressのバージョンアップを行った時です。
自分で行っていれば分かっているので対処出来ますが、自分の知らない所で行われた時
困る事になります(私はなりました)。

じゃあどうしようか。。。そうだソースを読もう!!。って事で取り合えずwp-db.phpを覗いてみました。
そしたらちゃんと丁寧に書かれていました。
*******************************************************
It is possible to replace this class with your own
by setting the $wpdb global variable in wp-content/db.php
file to your class. The wpdb class will still be included,
so you can extend it or simply use your own.
*******************************************************
wp-contentフォルダの下にdb.phpを作ってwpdbクラスを継承すればいいですよって事です。

ほほ~、って事で早速やりました。今回はtablesプロパティの値を変えたいだけなので、
コンストラクタでテーブルを追加する形です。
—————————————————————
require_once( ABSPATH . WPINC . ‘/wp-db.php’ );
class wpdbex extends wpdb {
function __construct($dbuser, $dbpassword, $dbname, $dbhost)
{
parent::__construct($dbuser, $dbpassword, $dbname, $dbhost);
// テーブルプロパティに独自テーブルを追加する
array_push($this->tables,’t_XXX1′,’t_XXX2′);
}
}
if (!isset($wpdb) ) {
$wpdb = new wpdbex(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
}
—————————————————————
ちなみにこれがどのタイミングで読み込まれているかといういうと、wp-include/load.phpに
require_wp_dbっていうメソッドがあります。
ここで読み込まれています。じゃあ、この呼び元はっていうと、wordpress/wp-settings.phpになります。

wordpress初心者な私にとっては大変勉強になる事件でした。
もしどなたか同じ事で悩まれている方の参考になれば・・・
(ってマニュアルにも書いてあるので、最初からそこ読めばよかったんですね)。

(加藤)
ホームページ作成 SEO 株式会社ティーエスフォート

投稿日:2015.03.12
ページ先頭へ