在wordpress插件激活上制作两个或多个表格
Make two or more than one tables on wordpress plugin activation
我最近完全从头开始制作一个插件,我试图在插件激活时制作一个 table,我同样成功了,但现在我想制作一个以上的 table插件激活,但我没有得到预期的结果。
两个中只有一个 table,下面是我的代码。
// Registering plugin
register_activation_hook(__FILE__,'myplugin_activate');
function myplugin_activate()
{
global $wpdb;
$table_name1 = $wpdb->prefix . "myentries";
$table_name2 = $wpdb->prefix . "myemail";
//installed_ver = get_option('my-voting-version');
if( $wpdb->get_var("show tables like '$table_name1' ") != $table_name1)
{
$sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name1) . "`(
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
sub longtext NOT NULL,
message longtext NOT NULL,
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}
if( $wpdb->get_var("show tables like '$table_name2' ") != $table_name2 )
{
$sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name2) . "`(
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
email varchar(50) NOT NULL,
PRIMARY KEY (id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}
}
此代码只生成一个table,即最后一个“*prefix_myemail”。请给我建议或给我写准确的代码来纠正这个问题。
提前感谢您的帮助..
可能是您忘记了 myentries
table 的主键,
尝试像这样添加主键
if( $wpdb->get_var("show tables like '$table_name1' ") != $table_name1)
{
$sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name1) . "`(
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
sub longtext NOT NULL,
message longtext NOT NULL,
PRIMARY KEY (id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}
我最近完全从头开始制作一个插件,我试图在插件激活时制作一个 table,我同样成功了,但现在我想制作一个以上的 table插件激活,但我没有得到预期的结果。
两个中只有一个 table,下面是我的代码。
// Registering plugin
register_activation_hook(__FILE__,'myplugin_activate');
function myplugin_activate()
{
global $wpdb;
$table_name1 = $wpdb->prefix . "myentries";
$table_name2 = $wpdb->prefix . "myemail";
//installed_ver = get_option('my-voting-version');
if( $wpdb->get_var("show tables like '$table_name1' ") != $table_name1)
{
$sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name1) . "`(
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
sub longtext NOT NULL,
message longtext NOT NULL,
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}
if( $wpdb->get_var("show tables like '$table_name2' ") != $table_name2 )
{
$sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name2) . "`(
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
email varchar(50) NOT NULL,
PRIMARY KEY (id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}
}
此代码只生成一个table,即最后一个“*prefix_myemail”。请给我建议或给我写准确的代码来纠正这个问题。
提前感谢您的帮助..
可能是您忘记了 myentries
table 的主键,
尝试像这样添加主键
if( $wpdb->get_var("show tables like '$table_name1' ") != $table_name1)
{
$sql = "CREATE TABLE IF NOT EXISTS `" . str_replace('`', '', $table_name1) . "`(
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
sub longtext NOT NULL,
message longtext NOT NULL,
PRIMARY KEY (id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
}