web-dev-qa-db-fra.com

Supprimer les tables de la base de données lors de la suppression du plug-in

J'ai créé un plugin et je souhaite ajouter une fonction pour supprimer mes tables de la base de données lorsqu'un utilisateur supprime mon plugin. J'ai créé une fonction qui supprime les tables de la base de données lorsqu'un utilisateur désactive mon plug-in, mais je ne le souhaite pas. Voici le code:

// Delete table when deactivate
function my_plugin_remove_database() {
     global $wpdb;
     $table_name = "NestoNovo";
     $sql = "DROP TABLE IF EXISTS $table_name;";
     $wpdb->query($sql);
     delete_option("my_plugin_db_version");
}    
register_deactivation_hook( __FILE__, 'my_plugin_remove_database' );

Comme vous pouvez le constater, cette fonction supprime les tables lorsque le plug-in est désactivé, mais je dois le faire lorsque le plug-in est supprimé.

9
Zzuum

Vous pouvez le faire en utilisant le support WordPress uninstall.php:

<?php
    if( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) exit();
    global $wpdb;
    $wpdb->query( "DROP TABLE IF EXISTS NestoNovo" );
    delete_option("my_plugin_db_version");
?>

Ce fichier uninstall.php est appelé lorsque votre plug-in est supprimé.

17
johnh10

Entrez le code ici:

register_deactivation_hook( __FILE__, 'my_plugin_remove_database' );
function my_plugin_remove_database() {
     global $wpdb;
     $table_name = $wpdb->prefix . 'NestoNovo';
     $sql = "DROP TABLE IF EXISTS $table_name";
     $wpdb->query($sql);
     delete_option("my_plugin_db_version");
}   
5
user106916