プラグインのアクティブ化中にテーブルを作成したいので、次のようにコードを使用しました。
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
を使用する方法?
あなたはあなた自身の質問に答えました。その機能を含むupgrade.phpファイルをインクルードする必要があります。さもなければあなたのプラグインアップデートにロードされず、関数は存在しません。
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');