WordPress で DB にアクセスするには wpdb クラスを使います。グローバル変数 $wpdb でアクセスすることが可能です。
この辺のことは以下のエントリをご参考ください。
WordPress の設定を使ってデータベースにアクセスする方法

しかし、WordPress をカスタマイズする際にプラグインやテーマだけではどうしても出来ずに DB とのやり取りをカスタマイズしたい場合が出て来た時に、wpdb クラスを直接カスタマイズするのはバージョンアップの時などを考えるとやりたくありません。

そういう場合に有効な方法が wp-content/db.php をいうファイルを使う方法です。wpdb クラスは wp-includes/wp-db.php で定義されていますが、それを読み込んでいるのは wp-includes/functions.php の require_wp_db という関数です。その関数のコードは以下のようになっています。

/**
 * Load the correct database class file.
 *
 * This function is used to load the database class file either at runtime or by
 * wp-admin/setup-config.php We must globalise $wpdb to ensure that it is
 * defined globally by the inline code in wp-db.php.
 *
 * @since 2.5.0
 * @global $wpdb WordPress Database Object
 */
function require_wp_db() {
	global $wpdb;
	if ( file_exists( WP_CONTENT_DIR . '/db.php' ) )
		require_once( WP_CONTENT_DIR . '/db.php' );
	else
		require_once( ABSPATH . WPINC . '/wp-db.php' );
}

wp-content/db.php というファイルは素の WordPress にはないのですが、このファイルを作っておくと wp-db.php をインクルードせずに db.php をインクルードしてくれるようになります。つまり wpdb クラスのカスタマイズが可能ということです。

wp-content/db.php で以下のような感じで wpdb クラスを継承したクラスを定義してそのクラスのインスタンスを $wpdb に入れておけば、WordPress 全体でカスタマイズした wpdb クラスを使用することができます。

require_once( ABSPATH . WPINC . '/wp-db.php' );
class my_wpdb extends wpdb {
    // カスタマイズしたい wpdb のメソッドをオーバーライドする
}
if ( ! isset($wpdb) ) {
    $wpdb = new my_wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
}

関連する投稿