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

时间:2017-06-02 00:10:48

标签: 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 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' );

1 个答案:

答案 0 :(得分:0)

首先,我改变了你的创建表脚本。从$ wpdb读取前缀,不检查表,使用CREATE IF NOT EXIST。

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' );

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