MySQLのデータの準備
- テーブル名:wp_sample_table
- データ
id name 1 佐藤 大輔 2 高橋 直樹 3 中村 健一
MySQLのデータを表示する
global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM wp_options WHERE option_id = 1", OBJECT );
結果
var_dumpで実行するとwp_optionsのoption_idが1のデータが表示されます。
自作のテーブルを登録する
自作のテーブルを使用したい場合、ただテーブル名を書いても表示されません。
なので、使用したいテーブルを登録する必要があります。
wp-db.phpに登録する
/wp-includes/wp-db.php
wp-db.phpの$tablesにテーブル名を追加します

wp-db.phpに直接記述してしまうとWordPressを更新した際、wp-db.phpに記述したものがすべて消えてしまう場合があります
なので次のように「db.php」を作成し、テーブル名を記述します
db.phpに登録する
wp-content/db.php
wp-content配下にdb.phpを作成します
db.phpの$tablesにテーブル名を追加します
今回は「sample_table」を追加します
require_once(ABSPATH.WPINC.'/wp-db.php');
class my_wpdb extends wpdb {
public $tables = array(
'posts',
'comments',
'links',
'options',
'postmeta',
'terms',
'term_taxonomy',
'term_relationships',
'termmeta',
'commentmeta',
'sample_table',
);
}
if( !isset($wpdb) ) {
$wpdb = new my_wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST );
}
参考URL:ワードプレスに独自テーブルを追加するなどもをかし。
自作のテーブルを表示する
global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM ". $wpdb->sample_table);
結果
var_dumpで実行するとwp_sample_tableのデータが表示されます。
array(3) {
[0]=> object(stdClass)#5640 (2) { ["id"]=> string(1) "1" ["name"]=> string(13) "佐藤 大輔" }
[1]=> object(stdClass)#5641 (2) { ["id"]=> string(1) "2" ["name"]=> string(13) "高橋 直樹" }
[2]=> object(stdClass)#5642 (2) { ["id"]=> string(1) "3" ["name"]=> string(13) "中村 健一" }
}
多次元配列を JSON 形式にして扱いやすくする
var_dumpで出力したデータは多次元配列になっているため、PHPで表示しようとするとうまくいきませんでした。
なので、以下のようにしてデータを表示しました。
global $wpdb;
$results = $wpdb->get_results( 'SELECT * FROM '. $wpdb->sample_table);
$json = json_encode( $results );
$decoded_data = json_decode( $json, true );
array(3) {
[0]=> array(2) { ["id"]=> string(1) "1" ["name"]=> string(13) "佐藤 大輔" }
[1]=> array(2) { ["id"]=> string(1) "2" ["name"]=> string(13) "高橋 直樹" }
[2]=> array(2) { ["id"]=> string(1) "3" ["name"]=> string(13) "中村 健一" }
}
そして、配列の中の「佐藤 大輔」を出力します。
print($decoded_data[0]["name"]);
佐藤 大輔
無事に「佐藤 大輔」が出力出来ました。
参考URL:php 多次元配列になったstdClassをArrayにキャストする
テーブル名に変数を使用する
global $wpdb;
$table_name = "sample_table";
$results = $wpdb->get_results( "SELECT * FROM ". $wpdb->prefix.$table_name);
prepareメソッドを使用する
global $wpdb;
$query = "SELECT * FROM $wpdb->sample_table WHERE id = %s";
$results = $wpdb->get_results( $wpdb->prepare( $query, 1));
global $wpdb;
$query = "SELECT * FROM $wpdb->sample_table WHERE name = %s";
$results = $wpdb->get_results( $wpdb->prepare( $query, "佐藤 大輔"));
文字列・・・・・・%s
数字・・・・・・・%d
浮動小数点数・・・%f