★★★ たった "1日" でできるWordPressブログの作り方講座 ★★★ はじめてみる
この記事には「PR」「宣伝」が含まれます

WordPressに独自のMySQLテーブル作成・読み書きする正しい方法とは?検証結果

WordPressへのMySQLテーブル作成

これをググってみたところ…

  • どの情報が正しいのかサッパリ分からない、
  • ブログごとに試している方法がバラバラ、
  • オマケに公式では説明すらされていない

そういった事態に遭遇しました。

MySQLテーブルの作成とかレアケースだし、
読み書きするなんて普通はしないですからね(困)

そこで何が正しいのか検証してみました。

ググるとdb.phpの情報とか色々出てくるが……

ググってみたら色々情報は出てきます。

↓ いくつか例を挙げるなら以下の通り

特に前者の方法がググると山ほど出てきます。

だから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以降の結果が分かれば満足です。

The following two tabs change content below.

フク郎

昔はプログラミングに熱中していたが、ブログとWordPressに興味を持ち始め今はサイト・ブログ作りが生きがい。自分の「好き」をブログに変えたい、情報発信したい人に役立つWordPress術・サイト構築術を発信中。一日一歩楽しんでブログ構築できるように読みやすい&楽しい記事作りを心がけています。メールアドレス : fukuropress@gmail.com