💻

WordPressで自作プラグインのインストール時に、オリジナルのテーブルを追加する方法

2024/06/17に公開

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