小金井にあるWEB制作会社の備忘録

MEMORANDUM

WordPress(ワードプレス)でプラグイン有効時にデータベースに独自テーブルを追加

WordPress(ワードプレス)のプラグイン作成時にカスタム投稿を利用せず、独自のテーブルを作成する場合の実装方法をメモ。

PHP

function create_tables(){
	global $wpdb;
	$charset_collate = "";
	$table_name = $wpdb->prefix . '○○○○';
	// charsetを指定する
	$charset_collate = $wpdb->get_charset_collate();
	// SQL文でテーブルを作る
	$sql = "CREATE TABLE {$table_name} (
		id int(11) NOT NULL AUTO_INCREMENT,
		name varchar(255) NOT NULL,
		memo text NOT NULL,
		del_flg int(11) NOT NULL,
		create_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
		PRIMARY KEY (id)
	) {$charset_collate} AUTO_INCREMENT=1;";
     require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
     dbDelta($sql);
}

// 有効にした時に引数で指定したファンクションを実行
register_activation_hook( __FILE__, 'create_tables' );

「$table_name」の部分で、新規に追加するテーブル名を、「$sql」の部分に追加したいカラムの情報を記載する。

参考までに、プラグイン停止時、または削除時にアクションを実行したい場合は下記の関数を使用。

PHP

// 停止した時に引数で指定したファンクションを実行
register_deactivation_hook(__FILE__, $function);

// アンインストールした時に引数で指定したファンクションを実行
register_uninstall_hook(__FILE__, $function);

//例:アンインストール時に前述のテーブルを削除する場合
function delete_table(){
	global $wpdb;
	$table_name = $wpdb->prefix . '○○○○';
	$sql = 'DROP TABLE '.$table_name;
	$wpdb->query($sql);
}
register_uninstall_hook( __FILE__, 'delete_table' );