我希望在插件激活时将表插入WordPress数据库。我已经使用过这段代码,但它无效。这个代码应该在插件被激活时创建一个表,但是当我激活插件时,在我的WordPress中,代码可以工作,但是数据库中没有创建表。
如何在插件激活时在WordPress数据库中创建表格?
我的插件使用了以下代码
class createtabel {
function __construct() {
register_activation_hook( __FILE__, 'create_plugin_database_table' );
}
public static function create_plugin_database_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wp_productqa';
$sql = "CREATE TABLE $table_name (
QA_id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
Product_ID varchar(50) NOT NULL,
Username varchar(50)NOT NULL,
Useremail varchar(50) NOT NULL,
comment varchar(255) NOT NULL,
PRIMARY KEY (QA_id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
}
答案 0 :(得分:0)
你必须确保调用register_activation_hook。
例如,在您的插件定义文件中,您可以:
$createTable = new createtabel;
register_activation_hook(__FILE__, array($createTable, 'create_plugin_database_table'));
BTW,在createtabel类中,您可以使用以下命令创建表:
$wpdb->query($sql);
你的意图也是
$table_name = $wpdb->prefix . 'wp_productqa';
最有可能(假设前缀为wp_)将具有:
$table_name = 'wp_wp_productqa';
答案 1 :(得分:0)
请在激活插件时使用此代码,它将在您的数据库中创建新表。
register_activation_hook(__FILE__, 'install_covercarousel');
在全局启动文件编码时定义上面的钩子。
另外,请不要使用public static function
只需添加function and functioname
这样function abs(){}
更改后的代码看起来像这样
register_activation_hook( __FILE__, 'create_plugin_database_table' );
function create_plugin_database_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'wp_productqa';
$sql = "CREATE TABLE $table_name (
QA_id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
Product_ID varchar(50) NOT NULL,
Username varchar(50)NOT NULL,
Useremail varchar(50) NOT NULL,
comment varchar(255) NOT NULL,
PRIMARY KEY (QA_id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}