WordPressのデータベースにテーブルを追加し、テーマファイルの中で使用するには以下の手順が必要となる。
データベースにログインしてCREATE文を実行する
mysqlコマンド、またはphpMyAdminにログインしてSQLを実行する。
以下はwp_hogeテーブルを作成する場合。
CREATE TABLE `wp_hoge` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
ALTER TABLE `wp_hoge` ADD PRIMARY KEY (`id`);
ALTER TABLE `wp_hoge` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
wp-content/db.phpを作成する
wp-content/db.phpにテーブル情報を定義することで、グローバル変数$wpdb
を使って各テーブルにアクセスできるようになる。
配列$tables
にテーブル名を定義する。
※接頭辞(wp_)は付けない
以下、hogeテーブルを作成した場合。
<?php
require_once( ABSPATH . WPINC . '/wp-db.php' );
class my_wpdb extends wpdb {
// データベーステーブルの定義を変更(hogeを追加)
var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta',
'terms', 'term_taxonomy', 'term_relationships', 'termmeta', 'commentmeta' ,
'hoge');
}
if ( ! isset($wpdb) ) {
$wpdb = new my_wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
}
データ登録処理
global $wpdb;
$sql = $wpdb->prepare("INSERT INTO $wpdb->hoge (id, name) values (%s, %d)", 1, 'test');
$wpdb->query($sql);
データ取得処理
global $wpdb;
$rows = $wpdb->get_results("SELECT * FROM $wpdb->hoge ORDER BY id DESC LIMIT 10");
foreach ($rows as $row ) {
echo "nameは" . $row->name ."です。";
}
コメント