dbDelta()


WordPress関数dbDelta()は、データベーステーブルの作成や変更を行うために使用される関数です。この関数は、主にプラグインやテーマで独自のデータベーステーブルを管理する際に利用されます。

構文

dbDelta( string $queries );
  • $queries (string) — 実行するSQLクエリの文字列。

注意点:

  • SQLクエリは必ずCREATE TABLEまたはALTER TABLE形式で記述する必要があります。
  • テーブル名は$wpdb->prefixを使用して一意にすることを推奨します。

例 1: テーブルの作成

基本的なテーブルを作成する例です。

<?php
global $wpdb;
$table_name = $wpdb->prefix . 'sample_table';
$sql = "CREATE TABLE $table_name (
    id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    name varchar(255) NOT NULL,
    PRIMARY KEY (id)
) $wpdb->get_charset_collate();";
dbDelta( $sql );
?>

例 2: テーブルにカラムを追加

既存のテーブルに新しいカラムを追加します。

<?php
global $wpdb;
$table_name = $wpdb->prefix . 'sample_table';
$sql = "ALTER TABLE $table_name ADD COLUMN age int(3) NOT NULL AFTER name;";
dbDelta( $sql );
?>

例 3: 複数のクエリを一度に実行

複数のSQLクエリを一度に実行します。

<?php
global $wpdb;
$table_name = $wpdb->prefix . 'sample_table';
$sql = "
CREATE TABLE {$table_name}_extra (
    id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    description text NOT NULL,
    PRIMARY KEY (id)
) $wpdb->get_charset_collate();
ALTER TABLE $table_name ADD COLUMN created_at datetime DEFAULT CURRENT_TIMESTAMP;
";
dbDelta( $sql );
?>

例 4: テーブルの存在チェック

テーブルが存在するか確認するコード。

<?php
global $wpdb;
$table_name = $wpdb->prefix . 'sample_table';
if ( $wpdb->get_var( "SHOW TABLES LIKE '$table_name'" ) === $table_name ) {
    echo 'テーブルは存在します。';
} else {
    echo 'テーブルは存在しません。';
}
?>

例 5: テーブルの削除

不要になったテーブルを削除する例。

<?php
global $wpdb;
$table_name = $wpdb->prefix . 'sample_table';
$wpdb->query( "DROP TABLE IF EXISTS $table_name;" );
?>

関連機能: