【WordPress】データベースへ新しいテーブルを追加する方法(独自テーブルの作成)

スポンサーリンク

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 ."です。";
}

コメント