插件升级时运行函数

时间:2012-08-10 作者:urok93

嗨,我在存储库中的插件的新版本改变了数据在数据库中的存储方式,我如何执行升级检查,自动将数据移动到新位置,这样用户就不会丢失任何设置,也不会知道引擎罩下发生了什么事?

1 个回复
最合适的回答,由SO网友:urok93 整理而成
global $myplugin_db_version;
$myplugin_db_version = "1.0";

function myplugin_install() {
    global $wpdb;
    global $myplugin_db_version;

    $table_name = $wpdb->prefix . "myplugin";

    $installed_ver = get_option( "myplugin_db_version" );

    if( $installed_ver != $myplugin_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( "myplugin_db_version", $myplugin_db_version );

    }
}

function myplugin_update_db_check() {
    global $myplugin_db_version;
    if ( get_site_option( \'myplugin_db_version\' ) != $myplugin_db_version) {
        myplugin_install();
    }
}
add_action(\'plugins_loaded\', \'myplugin_update_db_check\');
结束

相关推荐

Beta Versioning of Plugins

当我为一些bug编写修复程序时,我通常会增加版本并将其发送给bug查找程序,以查看我的修复程序是否有效。如果我有1.2.5 我想创建一个测试版,一旦我提交代码,它将变得多余,我应该使用1.2.5-beta 或1.2.6-beta? 我担心的是1.2.6 <;1.2.6-beta 因此,字符串比较可能有利于beta版,而bug查找程序不会收到发布稳定版本的通知。编辑:如果在不考虑发布类型的情况下对字符串进行绝对比较,则可以使用1.2.5-fix 然后1.2.6. 该问题也概述在http://en.wik