💻
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