您好我写了一个添加表格的功能。我已经测试了我的语法,它可以在我的phpmyadmin中运行,但由于某些原因它在我的插件中没有被激活? :S
class clients{
public static $version="1.0";
protected static function setup_tables(){
global$wpdb;
require_once(ABSPATH."/wp-admin/includes/upgrades.php");
dbDelta("CREATE TABLE ".$wpdb->prefix."hippie_clients (ID mediumint(9) NOT NULL AUTO_INCREMENT, email varchar(100) NOT NULL, password varchar(512), paid tinyint(1) NOT NULL DEFAULT 0, firstname varchar(50) NOT NULL, lastname varchar(70) NOT NULL,signup TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, free tinyint(1) DEFAULT 1,gender tinyint(1) NOT NULL, lastlog varchar(200), UNIQUE(email), PRIMARY KEY(ID))$wpdb->get_charset_collate();");
if(!isset($wpdb->clients))$wpdb->clients=$wpdb->prefix."hippie_clients";
add_option('Hippie_clients_version',self::$version);
}
//I'm using another class to manage my activation hooks etc but this is the basic idea
public static function setup(){
self::setup_tables();
}
public function run(){
register_activation_hook(__FILE__,(array('clients','setup'));
}
}
$clients=new clients();
$clients->run();
但是没有添加表格。我的表语法是什么?还是我的设置方式?它是受保护的关键字吗?
答案 0 :(得分:0)
我遇到错误的原因有几个。首先register_activation_hooks()
是一个棘手的问题。它没有使用我的类结构进行注册(上面没有显示)。
为了解决这个问题,我通过在插件的主文件中注册激活进行了快速修复。
第二个是UNIQUE
和括号之间需要一个空格,PRIMARY KEY
和括号之间需要2个空格。
我还发现$wpdb->get_charset_collate()
导致我的表创建错误,所以现在只需删除它。