💻
WordPressで自作プラグインのインストール時に、オリジナルのテーブルを追加する方法
WordPressで自作プラグインをインストール時に、オリジナルのテーブルをデータベースに追加するには、register_activation_hookを使います。
テーブルを作成しよう
プラグインファイルに、次のコードを追加しましょう。
global $wpdb
define('MY_TABLE_NAME', $wpdb->prefix . 'my_table');
register_activation_hook(__FILE__, function() {
$table_name = MY_TABLE_NAME;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option('my_table_db_version', '1.0');
});
プラグインがインストールされると、register_activation_hookアクションが呼び出されるので、まずはここでSQLを組み立てましょう。そしたら、dbDelta関数を使ってテーブルを作成します。また、データベースのバージョンを設定しておきましょう。
なお、ここではテーブル名はwp_my_tableなどになります。$wpdb->prefixは、WordPressの「テーブルプリフィックス」を取得するための変数で、これはWordPressをインストールするときに指定します(wp-config.phpに記載されています)。標準はwp_です。
アンインストール時にテーブルを削除しよう
作成したテーブルは、プラグインをアンインストールされるときには、必ず削除しなければなりません。register_deactivation_hookで処理をしましょう。
register_deactivation_hook(__FILE__, function() {
$table_name = MY_TABLE_NAME;
$sql = "DROP TABLE IF EXISTS $table_name";
$wpdb->query($sql);
delete_option('my_table_db_version');
});
DROP TABLEでテーブルを削除し、データベースのバージョン情報も削除します。
これできれいになります。
Discussion