如何使用WordPress插件在数据库中创建表

如何使用WordPress插件在数据库中创建表,wordpress,plugins,Wordpress,Plugins,我正在尝试创建一个WordPress自定义插件,但在激活插件时,我一直在数据库中创建一个表。 我尝试了以下代码: function create_plugin_database_table() { global $table_prefix, $wpdb; $tblname = 'customer'; $wp_track_table = $table_prefix . "$tblname "; #Check to see if the tab

我正在尝试创建一个WordPress自定义插件,但在激活插件时,我一直在数据库中创建一个表。 我尝试了以下代码:

function create_plugin_database_table()
{
    global $table_prefix, $wpdb;

    $tblname = 'customer';
    $wp_track_table = $table_prefix . "$tblname ";

    #Check to see if the table exists already, if not, then create it

    if($wpdb->get_var( "show tables like '$wp_track_table'" ) != 
    $wp_track_table) 
    {

    $sql = "CREATE TABLE `". $wp_track_table . "` ( ";
    $sql .= "  `id`  int(11)   NOT NULL auto_increment, ";
    $sql .= "  `pincode`  int(128)   NOT NULL, ";
    $sql .= "  PRIMARY KEY `order_id` (`id`) "; 
    $sql .= ") ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; ";
    require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
    dbDelta($sql);
    }
}

register_activation_hook( __FILE__, 'create_plugin_database_table' );

首先,我对您的创建表脚本做了一些更改。从$wpdb读取前缀,不检查表,如果不存在,请使用CREATE

function create_plugin_database_table() {
  global $wpdb;

  $tblname = 'customer';
  $wp_track_table = $wpdb->prefix . "$tblname";

  $sql = "CREATE TABLE IF NOT EXISTS $wp_track_table ( ";
  $sql .= "  `id`  int(11)   NOT NULL auto_increment, ";
  $sql .= "  `pincode`  int(128)   NOT NULL, ";
  $sql .= "  PRIMARY KEY `order_id` (`id`) "; 
  $sql .= ") ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; ";
  require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
  dbDelta($sql);

}
register_activation_hook( __FILE__, 'create_plugin_database_table' );

而且,我已经提出了要求。如果需要插入一些默认值,请在创建后执行,而不是在同一请求中。如果不起作用,请启用调试并检查日志。

您可以显示一些尝试吗?我已经编辑了我的问题,请检查。当我尝试停用插件并再次激活时,它不会在我的数据库中创建表。出现错误:插件无法激活,因为它触发了致命错误。致命错误:当我试图更改require_一次(ABSPATH./wp admin/includes/upgrade.php')时,调用了未定义的函数dbDelta();直到dbDelta(sql);激活成功对不起,我没有正确阅读要求。执行require before函数dbDelta是正确的,因为这些函数是在此文件上定义的。回复更新。嗨,樱花,你能帮我做我的插件吗?如果你还有其他关于如何做事情的问题,并且你一直在尝试,如果我知道如何帮助你,我可以给出任何答案。如果你在这上面多问些问题就可以了