插件的数据库“迁移”?

时间:2016-09-24 作者:Alan Storm

我正在为WordPress创建一个插件。此插件需要将数据保存到数据库。在我使用过的其他编程框架中,有一种称为“数据库迁移”的系统。这些迁移是

SQLALTER TABLECREATE TABLE 语句/脚本有时抽象为框架的编程语言,以一种常见的方式编写和存储,以便插件/扩展等的用户可以说“运行迁移”,并根据我的说明更新数据库,有时还包括允许您“回滚”这些更改的功能示例迁移系统is Laravel\'s.

WordPress是否有类似于迁移的系统?如果没有,是否有一种规范的方法(通过特定的挂钩、插件注册等)来打包我的插件需要的新数据库表和/或对现有WordPress表的更改?

1 个回复
最合适的回答,由SO网友:cowgill 整理而成

令人惊讶的是,事实并非如此。相反,您需要使用以下函数,该函数在插件激活时运行。

define( \'YOUR_PLUGIN_VERSION\', \'1.0.0\' );

register_activation_hook( __FILE__, \'your_plugin_activation_function\' );

function your_plugin_activation_function() {
  // Do activation tasks here.
  your_install_function();
  your_upgrade_migration_function();
}
运行安装脚本。

function your_install_function() {

  // Set the current version of the plugin in the db.
  update_option( \'your_plugin_version\', YOUR_PLUGIN_VERSION );
}
然后对每个新版本进行比较,基本上执行数据库迁移等操作。

function your_upgrade_migration_function() {

  // Using a version prior to 1.1.1
  if ( version_compare( YOUR_PLUGIN_VERSION, \'1.1.1\', \'<\' ) ) {
    // Do upgrade things unique for this version.
  }

  // Using a version prior to 1.2.0
  if ( version_compare( YOUR_PLUGIN_VERSION, \'1.2.0\', \'<\' ) ) {
    // Do upgrade things unique for this version.
  }
}