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?
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');