web-dev-qa-db-fra.com

Erreur fatale: appel de la fonction non définie dbDelta ()

Je veux créer une table lors de l'activation du plugin, j'ai donc utilisé le code comme suit:

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 );
    }
}

Mais lors de l'activation du plugin, l'erreur fatale est renvoyée,

Erreur fatale : Appel de la fonction non définie dbDelta () dans wp-content/plugins/myPlugin/libraries/Database.class.php sur ligne 26

Dans certains forums, certains suggèrent d'utiliser, require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); avant l'appel de fonction.

Ça fonctionne. Mais je voulais juste savoir si c'était la bonne approche? Comment utiliser le dbDelta de manière correcte pour que cela fonctionne?

1
Stranger

Vous avez répondu à votre propre question. Vous devez inclure le fichier upgrade.php qui contient cette fonction. Sinon, ne sera pas chargé sur la mise à jour de votre plugin et la fonction n'existera pas.

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