如上所述,after_switch_theme
应该是个不错的选择。您的表创建/更新功能只会在切换主题时运行,这大致类似于激活插件。如果您使用dbDelta
要创建和/或更新表,表创建应该没有问题。From the Codex:
global $wpdb;
$installed_ver = get_option( "jal_db_version" );
if( $installed_ver != $jal_db_version ) {
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
time datetime DEFAULT \'0000-00-00 00:00:00\' NOT NULL,
name tinytext NOT NULL,
text text NOT NULL,
url VARCHAR(100) DEFAULT \'\' NOT NULL,
UNIQUE KEY id (id)
);";
require_once( ABSPATH . \'wp-admin/includes/upgrade.php\' );
dbDelta( $sql );
update_option( "jal_db_version", $jal_db_version );
}
这将对照数据库中存储的版本检查硬编码表的版本,并在必要时创建或更新。注意:它将创建
or 根据以下人员的计算进行更新
dbDelta
. 它不会尝试两次创建同一个表。如果表已经存在,它将尝试应用现有表和新表定义之间的差异。