这个问题一直困扰着我,我希望你能帮助我。我目前正在为Wordpress开发一个插件,以支持巡演作为一种帖子类型(这是一个乐队网站)。对于巡回赛我需要知道场地,所以我创建了分类法Venue。现在我想将元数据添加到分类中,所以我尝试将表添加到我的Wordpress数据库中。这是我到目前为止所得到的:
global $scooby_db_version;
$scooby_db_version = '0.1';
new Venue();
class Venue {
function __construct(){
add_action('plugins_loaded', array(&$this, 'install'));
}
function install(){
global $scooby_db_version;
global $wpdb;
if(get_site_option('scooby_db_version') != $scooby_db_version){
$table_name = $wpdb->prefix."term_meta";
$sql = "
------- Taxonomy Meta -------
CREATE TABLE $table_name (
meta_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
term_id bigint(20) unsigned NOT NULL DEFAULT '0',
meta_key varchar(255) DEFAULT NULL,
meta_value longtext,
PRIMARY KEY (meta_id),
INDEX term_id (term_id),
INDEX meta_key (meta_key)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option('scooby_db_version', $scooby_db_version);
}
}
}
这一点都没有。看起来它确实工作了一次,因为选项表中有一个条目,但它不会更新。似乎函数根本就没有调用过,但是当它(因此是db-entry)时它没有创建表。
我对此感到非常沮丧,因为我不能以这种方式继续处理我的插件。你们能搞清楚会出现什么问题吗?为什么不调用我的函数或更新我的数据库?
答案 0 :(得分:1)
dbDelta既方便又婊子。
http://codex.wordpress.org/Creating_Tables_with_Plugins#Creating_or_Updating_the_Table
PRIMARY KEY
之间两个空格和主键定义。KEY
而不是其同义词INDEX
,并且必须至少包含一个KEY
。