致命错误:调用未定义的函数dbDelta()

时间:2017-01-31 作者:Stranger

我想在插件激活期间创建一个表,因此我使用了如下代码:

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 以正确的方式工作?

1 个回复
最合适的回答,由SO网友:chifliiiii 整理而成

你回答了自己的问题。您需要包括升级。包含该函数的php文件。否则将不会加载到插件更新中,并且该函数将不存在。

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

相关推荐

Database problem

我的数据库有问题。首页工作正常,但当我想访问backoffice mysite时。com/wp admin我正在重定向到/wp admin/install。因此,我打开了phpmyadmin,看到有一个空数据库。。没有列,没有行,只有前端站点和所有页面工作正常吗?XD。发生了什么事?我有w3 total缓存和云flare。也许我的网站只因为我的数据库被缓存而工作?如何恢复数据库?请帮帮我,我没有备份。