将表添加到wordpress安装

时间:2012-05-03 17:12:05

标签: php wordpress wordpress-plugin

这个问题一直困扰着我,我希望你能帮助我。我目前正在为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)时它没有创建表。

我对此感到非常沮丧,因为我不能以这种方式继续处理我的插件。你们能搞清楚会出现什么问题吗?为什么不调用我的函数或更新我的数据库?

1 个答案:

答案 0 :(得分:1)

dbDelta既方便又婊子。

http://codex.wordpress.org/Creating_Tables_with_Plugins#Creating_or_Updating_the_Table

  • 您必须在SQL语句中将每个字段放在自己的行中。
  • 您必须在单词PRIMARY KEY之间两个空格和主键定义。
  • 您必须使用关键字KEY而不是其同义词INDEX,并且必须至少包含一个KEY