【WordPress】独自テーブルの読み書き【PHP】

  • 投稿 : 2017-02-25
SQLを直接文字列で組み立てる場合は、SQLインジェクション(SQL Injection)には気を付けてください。

独自テーブル

関数リファレンス/wpdb Class - WordPress Codex 日本語版

独自テーブルの読み書きは上記のリンク先をみれば簡単に実現できると思う。

※Wordpress 4.7.2–jaで確認しました

テーブル名(プレフィックスの処理)

 global $wpdb;
 $table_name = $wpdb->prefix . "sample_table"; 

標準設定では、wp_sample_tableというテーブル名になるかと思います。

SELECT文関係

wp_sample_tableテーブルの中身
namevalue
1site_domainexample.com


global $wpdb;

$sql = "select name,value from ". $wpdb->prefix . "sample_table where name='site_domain';";
$rs = $wpdb->get_results($sql);

echo $rs[0]->name ." : " .$rs[0]->value;

$rsにレコードセット(複数行)が返却されます。
今回は、1レコードヒットすることが分かっている&動作確認なので、決めうちで$rs[0]で取り出してます。

その他の例

Wordpressが用意している関数の使い方になるかと思います。

■1項目だけ取り出す
global $wpdb;
$sql = "select value from ". $wpdb->prefix . "sample_table where name='site_domain';";
$data = $wpdb->get_var($sql); 

echo $data;

■1行だけ取り出す
global $wpdb;
$sql = "select name,value from ". $wpdb->prefix . "sample_table where name='site_domain';";
$row = $wpdb->get_row($sql); 
echo $row->name ." : " .$row->value;


「$wpdb->prepare」でパラメータクエリのような感じで使える関数とかいろいろあります。

INSERT文関係

global $wpdb;
$sql ="insert into ".$wpdb->prefix . "sample_table (name,value) VALUES('site_domain','example.com');";

$wpdb->query($sql);

INSERT文を直接SQL文で発行するやり方。

その他

global $wpdb;

$wpdb->insert( $wpdb->prefix . "sample_table", 
	array('name' => 'site_domain','value' => 'example.com'), 
	array('%s','%s') );

$wpdb->insert( $table, $data, $format );で、データを追加するほうほうもあります。

UPDATE、DELETE文関係

$wpdb->query($sql);で実行できます。

また、 $wpdb->update()関数、$wpdb->delete()関数が用意されているのもINSERTと同じ感じ。

スポンサーリンク