Warning: Cannot modify header information - headers already sent by (output started at /home/fukuro-press/www/fukuropress/index.php:4) in /home/fukuro-press/www/fukuropress/wp-content/plugins/all-in-one-seo-pack/app/Common/Meta/Robots.php on line 87

Warning: Cannot modify header information - headers already sent by (output started at /home/fukuro-press/www/fukuropress/index.php:4) in /home/fukuro-press/www/fukuropress/wp-includes/feed-rss2.php on line 8
MySQL | Fukuro Press https://fukuro-press.com 「できない」を「デキル」に変えるWordPressブログ術 Thu, 14 Mar 2024 08:30:43 +0000 ja hourly 1 https://wordpress.org/?v=4.9.25 https://fukuro-press.com/wp-content/uploads/2018/08/favicon-1.png MySQL | Fukuro Press https://fukuro-press.com 32 32 WordPressに独自のMySQLテーブル作成・読み書きする正しい方法とは?検証結果 https://fukuro-press.com/wp-read-write-custom-mysql-tables/ https://fukuro-press.com/wp-read-write-custom-mysql-tables/#respond Wed, 19 Oct 2022 08:30:09 +0000 https://fukuro-press.com/?p=14798 WordPressへのMySQLテーブル作成 これをググってみたところ… どの情報が正しいのかサッパリ分からない、 ブログごとに試している方...

The post WordPressに独自のMySQLテーブル作成・読み書きする正しい方法とは?検証結果 first appeared on Fukuro Press.

]]>

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 post WordPressに独自のMySQLテーブル作成・読み書きする正しい方法とは?検証結果 first appeared on Fukuro Press.

]]>
https://fukuro-press.com/wp-read-write-custom-mysql-tables/feed/ 0