到目前为止,我一直在register_activation_hook
中为所有表使用以下代码:
$playlist_table = $wpdb->prefix . "app_playlists";
if($wpdb->get_var( "show tables like '$playlist_table'" ) != $playlist_table){
$sql = "CREATE TABLE $playlist_table (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) $charset_collate;";
dbDelta( $sql );
}
然后稍后在plugins_loaded操作中,我检查插件版本,然后偶尔在表中添加一些列,也可能删除或修改一些列。
这会在各个地方扩展表代码,从而使其难以维护。我想知道我是否可以这样写CREATE TABLE
,使我对表的所有更改都集中在一个地方,而wpdb只会自行更新表?
例如,假设所有更新后我的表现在都像这样:
$sql = "CREATE TABLE $playlist_table (
`id` int(11) NOT NULL AUTO_INCREMENT,
`major_title` varchar(300) NOT NULL,
`new_column` varchar(500) NOT NULL,
`some_other_new_column` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`)
) $charset_collate;";
dbDelta( $sql );