Wordpress插件:检查表是否存在,创建表并插入大量数据

时间:2014-04-18 19:39:46

标签: php mysql wordpress wordpress-plugin

我目前有一个运行良好的wordpress插件,但我现在面临的问题是确保它可以跨任何服务器实例进行部署。基本上我试图这样做,所以插件将创建我需要的表,以及在激活插件时自动插入大量数据(11k +行)。我有导出的sql文件,其中包含所有表(3.8MB)。

我计划实现和自定义的代码如下,但我不确定如何引用SQL文件,除了插入所有数据外,还要创建5个单独的表。

//action hook for plugin activation
register_activation_hook( __FILE__, 'callback_plugin' );
//callback function
function callback_plugin(){
    global $wpdb;
    $table_name = $wpdb->prefix . "your-table-name";
    if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
        $sql = "CREATE TABLE $table_name (
                id int NOT NULL AUTO_INCREMENT,
                name tinytext NOT NULL
                );";
        //reference to upgrade.php file
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
    }
}

非常感谢任何和所有帮助!

1 个答案:

答案 0 :(得分:3)

取决于您是在自己的服务器上还是在未知的服务器上部署它。

一次运行就要做很多SQL。我认为它更像是一个队列系统,并通过基于AJAX的导入运行,即:导入11,000行或其他任何东西。例如,您可以批量生成10行。

所以有人会激活插件。

将它们重定向到“安装屏幕”,说“这可能需要几分钟”

点击安装按钮

jQuery现在循环遍历列表并执行admin-ajax一次添加10个(例如)行,然后在完成后显示消息。

如果你在廉价的共享托管公司试试这个,你会有超时,部分数据导入等等......有点乱!