web-dev-qa-db-ja.com

致命的なエラー:未定関数dbDelta()の呼び出し

プラグインのアクティブ化中にテーブルを作成したいので、次のようにコードを使用しました。

class Database
{
    private $db_version = '1.0', $table_prefix;

    public function __construct()
    {
        global $wpdb;
        $this->table_prefix = $wpdb->prefix;
        register_activation_hook( PLUGIN_INDEX_FILE, array($this, 'dbSetup') );
    }

    public function dbSetup()
    {
        $countriesSQL = "CREATE TABLE $this->table_prefix . countries (
            id int(11) UNSIGNED NOT NULL,
            country_code varchar(2) NOT NULL DEFAULT '',
            country_name varchar(100) NOT NULL DEFAULT '',
            PRIMARY KEY  (id)
        ) $charset_collate;";
        dbDelta( $countriesSQL );
    }
}

しかし、プラグインの起動中に、それは致命的なエラーをスローします:

致命的なエラー 26行目上のwp-content/plugins/myPlugin/libraries/Database.class.phpで未定義の関数dbDelta()を呼び出しています

フォーラムによっては、関数呼び出しの前にrequire_once(ABSPATH . 'wp-admin/includes/upgrade.php');を使うことを提案しているものもあります。

それは働いています。しかし、これが正しいアプローチであるかどうか、私は知りたいのですが?それを機能させるために正しい方法でdbDeltaを使用する方法?

1
Stranger

あなたはあなた自身の質問に答えました。その機能を含むupgrade.phpファイルをインクルードする必要があります。さもなければあなたのプラグインアップデートにロードされず、関数は存在しません。

require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
4
chifliiiii