您好,我已经编写了一个添加表格的函数。我已经测试了我的语法,它在我的 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();
但是没有添加表格。我的表语法?还是我设置的方式?是 protected 关键字吗?
最佳答案
我遇到错误有几个原因。首先,register_activation_hooks()
是我遇到的一个棘手问题。它没有使用我的类结构(上面未显示)进行注册。
为了解决这个问题,我通过在插件的主文件中注册激活来快速修复。
第二个是 UNIQUE
和括号之间需要一个空格,PRIMARY KEY
和括号之间需要两个空格。
我还发现 $wpdb->get_charset_collate()
导致了我的表创建错误,因此暂时将其删除。
关于php - 当 SQL 语法正确时,Wordpress dbDelta 函数不添加表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415844/