$wpdbに自作データベースを追加で読み込む方法です。
WordPressに自作DBテーブルを追加し、$wpdbでアクセスする方法として、よく紹介されているのは、wp-includes/wp-db.phpを直接編集する方法です。
ですが、この方法では、ワードプレスのバージョンアップ時にファイルが上書きされてしまうため、ワードプレスの更新を行うたび、wp-db.phpを書き換える必要があります。
アップデートでのファイル上書きを回避するには以下のようにします。
wp-content直下にdb.phpを作成する
ワードプレスは、wp-contentフォルダにdb.phpがあると、wp-db.phpではなくdb.phpを優先的に読み込んでくれる機能になっています。
wp-contentフォルダにdb.phpを新しく作成します。(wp-content/db.php)
db.phpに下記をコピペします。
1 2 3 4 5 6 7 8 9 10 |
<?php require_once( ABSPATH . WPINC . '/wp-db.php' ); class my_wpdb extends wpdb { // areaとprefという名前のデータベースを追加で読み込んでみます。 var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 'terms', 'term_taxonomy', 'term_relationships', 'termmeta', 'commentmeta' ,'area','pref'); } if ( ! isset($wpdb) ) { $wpdb = new my_wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST); } |
何をしているかというと、$tablesという変数だけを
var $tables = array( ‘posts’, ‘comments’, ‘links’, ‘options’, ‘postmeta’,’terms’, ‘term_taxonomy’, ‘term_relationships’, ‘termmeta’, ‘commentmeta’);
↓
var $tables = array( ‘posts’, ‘comments’, ‘links’, ‘options’, ‘postmeta’,’terms’, ‘term_taxonomy’, ‘term_relationships’, ‘termmeta’, ‘commentmeta’ ,’area’,’pref’);
に書き換えて、あとはそのままwp-db.phpのとおり実行してね、といった内容です。
上記の工程だけで、wp_areaとwp_prefというデータべースを追加で読み込むことができます。(接頭辞がwp_の場合)
この方法であれば、アップデートなどがあっても心配不要です。
コメント
[…] […]
はじめまして。
初心者と申します。
よろしくお願いいたします。
自作データベースに登録ができず、解決策を探していてこちらにたどりつきました。
子テーマフォルダを作成し、自作テンプレートの登録フォームから、
wordpressのデータベースの中に新規テーブルを作成し、フォームから送信したデータを登録したいのですが
wp-contentフォルダにdb.phpを保存しても登録できませんでした。
子テーマを使用した場合、この方法ではできないのでしょうか。
お手数ですが、ご教示いただければ幸甚です。
どうぞよろしくお願いいたします。
当方、linux ubuntu で作業しております。
自己解決しました。
お騒がせしました。