WordPressへのMySQLテーブル作成
これをググってみたところ…
- どの情報が正しいのかサッパリ分からない、
- ブログごとに試している方法がバラバラ、
- オマケに公式では説明すらされていない
そういった事態に遭遇しました。
MySQLテーブルの作成とかレアケースだし、
読み書きするなんて普通はしないですからね(困)
そこで何が正しいのか検証してみました。
目次
ググるとdb.phpの情報とか色々出てくるが……
ググってみたら色々情報は出てきます。
↓ いくつか例を挙げるなら以下の通り
- https://qiita.com/fuku_up/items/28e7540cac7cfc1602f1
こちらでは独自テーブル作成後に /wp-includes/wp-db.php に追加テーブルを登録している。方法としてはかなりリスクが高いと思う
- https://blog.at-human.com/2021/06/wp-original-tables/
こちらでは wp-db.php を編集する方法を批判しつつ、より安全度の高い /wp-content/db.php にDB設定を上書きする方法を採用している
特に前者の方法がググると山ほど出てきます。
だからwp-db.phpの編集が必須と思い込んでました。
ところが実際に検証していくと「ん?」と思うようなこともあったし、どうやら検索トップの情報は正しくないみたいです。( ← SEOを学んでいくと気づく事実)
また後者のdb.phpの方法も違和感があります。
だから実際に検証してみました。
まずphpMyAdminから検証用テーブルを作ってみた
初めにphpMyAdminから適当にテーブル作成します。
WordPressではテーブル名に接頭辞を付けます。
デフォルトだと wp_ が標準的に使われるみたいです。
↓ まずは接頭辞ありのテーブル作成
CREATE TABLE wp_test (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name tinytext NOT NULL,
UNIQUE KEY id (id)
)
↓ つぎは接頭辞なしのテーブル作成
CREATE TABLE test (
id mediumint(9) NOT NULL AUTO_INCREMENT,
name tinytext NOT NULL,
UNIQUE KEY id (id)
)
↓ テストレコードを挿入
ひとまずこの2つをテスト用に用意しました。
なんとwp-db.phpの編集なしでも読み書きできた!
それでは実際に読み書きしてみます。
ググって出てくる情報によると wp-db.php を編集しろと書いてあったり、db.php でデータベース構成を上書きしろとか書いてあるって話でした。
ここではそれらをすべて無視します。
↓ そして以下コードを試してみました。
add_action('wp_footer', 'my_test_custom_tables');
function my_test_custom_tables(){
global $wpdb;
/// 接頭辞ありのレコード取得
$results = $wpdb->get_results( "SELECT * FROM wp_test");
print_r("wp_test : " . json_encode($results));
/// 接頭辞なしのレコード取得
$results = $wpdb->get_results( "SELECT * FROM test");
print_r("test : " . json_encode($results));
}
↓ どちらも問題なく取得できてしまった…
wp_test : [
{"id":"1","name":"山田太郎"},
{"id":"2","name":"山田花子"}
]
test : [
{"id":"1","name":"山田太郎"},
{"id":"2","name":"山田花子"}
]
もちろん書き込みについても同様です。
なんの問題もなく警告も出ずにできました。
ググった情報は何だったのかというレベル
ちなみに検証に使用したWordPress環境について
もちろん全WordPressバージョンで検証はしてません。
↓ 検証に使用したWordPress/サーバー環境
- WordPress5.6.9
- phpMyAdminが使用可能
少なくとも5.6.9以降なら問題ないかと
本当にwp-db.phpの編集も必要なかったです。
WordPress5.6以前ではdb.phpの編集も必要かも
ただしWordPress5.6未満では保証できません。
↓ 独自MySQLテーブルには以下の設定が必要かも
- /wp-includes/wp-db.phpにて構成編集
- /wp-content/db.phpを作ってDB構成上書き
もしWordPress4.*.*以下を使っているなら…独自テーブルの読み書きに上記行為が必要になる可能性があります。そこは各自の環境次第です。
私自身はこれ以上の検証はしません。
ひとまずver5.6.9以降の結果が分かれば満足です。
フク郎
最新記事 by フク郎 (全て見る)
- トレンドブログが資産に?放置でアクセス急増の事例 - 3月 14, 2024