我正在尝试创建一个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' );
答案 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' );
另外,我已经提出要求了。如果需要插入一些默认值,请在创建后执行,而不是在同一请求中执行。如果没有用,请启用调试和检查日志。