如何在wordpress中进行数据库迁移?

时间:2015-06-03 11:24:11

标签: database wordpress database-migration

我是wordpress的新手。我创建了一个自定义可安装插件。现在我希望当安装此插件时,应该将一些表迁移到此插件所需的数据库。

任何帮助都会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您可以注册激活hook。当您的插件被激活并执行您想要的操作时,这将触发。与dbDelta结合使用,您可以执行表的创建(如果新版本需要不同的表格布局,则可以执行更改)。

提供了一个工作实例:

<?php

    global $jal_db_version;
    $jal_db_version = '1.0';

    function jal_install() {
        global $wpdb;
        global $jal_db_version;

        $table_name = $wpdb->prefix . 'liveshoutbox';

        $charset_collate = $wpdb->get_charset_collate();

        $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(55) DEFAULT '' NOT NULL,
            UNIQUE KEY id (id)
        ) $charset_collate;";

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );

        add_option( 'jal_db_version', $jal_db_version );
    }

    function jal_install_data() {
        global $wpdb;

        $welcome_name = 'Mr. WordPress';
        $welcome_text = 'Congratulations, you just completed the installation!';

        $table_name = $wpdb->prefix . 'liveshoutbox';

        $wpdb->insert( 
            $table_name, 
            array( 
                'time' => current_time( 'mysql' ), 
                'name' => $welcome_name, 
                'text' => $welcome_text, 
            ) 
        );
    }

    register_activation_hook( __FILE__, 'jal_install' );
    register_activation_hook( __FILE__, 'jal_install_data' );

?>