我想在插件激活期间创建一个表,因此我使用了如下代码:
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 );
}
}
但在插件激活过程中,它会抛出致命错误,
Fatal error: 调用中未定义的函数dbDelta()wp-content/plugins/myPlugin/libraries/Database.class.php
在第26行
在一些论坛上,一些人建议使用,require_once(ABSPATH . \'wp-admin/includes/upgrade.php\');
函数调用之前。
它正在发挥作用。但我只是想知道,这是不是正确的方法?如何使用dbDelta
以正确的方式工作?
最合适的回答,由SO网友:chifliiiii 整理而成
你回答了自己的问题。您需要包括升级。包含该函数的php文件。否则将不会加载到插件更新中,并且该函数将不存在。
require_once(ABSPATH . \'wp-admin/includes/upgrade.php\');