0

一日中私を悩ませてきたこの問題があります、そして私はあなたが私を助けてくれることを望みました。私は現在、投稿タイプとしてツアーデートをサポートするために、Wordpress用のプラグインを開発しています(バンドのWebサイト用です)。ツアー日程については、会場を知る必要があるため、分類法の会場を作成しました。メタデータを分類法に追加したいので、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);
        }
    }
}

これは何もしません。オプションテーブルにエントリがあるため、1回は機能したようですが、更新されません。関数がまったく呼び出されていないように見えますが、呼び出されたとき(したがって、db-entry)、テーブルは作成されませんでした。

この方法でプラグインの作業を続けることができないため、私はこれに本当に不満を感じています。何が悪いのか理解できますか?関数を呼び出さないのか、データベースを更新しないのですか?

4

1 に答える 1

1

dbDeltaは便利であり、雌犬でもあります。

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

  • SQLステートメントの各フィールドを独自の行に配置する必要があります。
  • 単語と主キーの定義の間に2つのスペースが必要です。PRIMARY KEY
  • KEY同義語ではなくキーワードを使用するINDEX必要があり、少なくとも1つを含める必要がありますKEY
于 2012-05-04T07:37:02.370 に答える