0

这个问题一直困扰着我一整天,希望你能帮助我。我目前正在为 Wordpress 开发一个插件,以支持 tourdates 作为帖子类型(它用于乐队网站)。对于巡回演出,我需要知道场地,所以我创建了分类场地。现在我想将元数据添加到分类中,所以我尝试将一个表添加到我的 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)它没有创建表。

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

4

1 回答 1

1

dbDelta 既方便又讨厌。

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

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