wake-up-neo.com

Löschen Sie Tabellen aus der Datenbank, wenn Sie das Plugin löschen

Ich habe ein Plugin erstellt und möchte eine Funktion zum Löschen meiner Tabellen aus der Datenbank hinzufügen, wenn ein Benutzer mein Plugin löscht. Ich habe eine Funktion erstellt, die Tabellen aus der Datenbank löscht, wenn ein Benutzer mein Plugin deaktiviert, aber das möchte ich nicht. Hier ist der 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' );

Wie Sie sehen können, löscht diese Funktion Tabellen, wenn das Plugin deaktiviert ist, aber ich muss das tun, wenn das Plugin gelöscht wird.

9
Zzuum

Sie können dies mit der WordPress uninstall.php-Unterstützung tun:

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

Diese uninstall.php-Datei wird aufgerufen, wenn Ihr Plugin gelöscht wird.

17
johnh10

Code hier eingeben:

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

Sie müssen register_uninstall_hook hook anstelle von register_deactivation_hook verwenden, um Tabellen aus der Datenbank zu löschen.

register_deactivation_hook wird ausgelöst, wenn wir ein Plugin deaktivieren, und register_uninstall_hook wird ausgelöst, wenn wir unser Plugin remove/delete möchten.

Bitte verwenden Sie diesen Code, wenn Sie nur eine Tabelle haben:

function delete_plugin_database_table(){
    global $wpdb;
    $table_name = $wpdb->prefix . 'table_name';
    $sql = "DROP TABLE IF EXISTS $table_name";
    $wpdb->query($sql);
}

register_uninstall_hook(__FILE__, 'delete_plugin_database_table');

Wenn Sie mehr als zwei Tabellen haben, verwenden Sie diesen Code:

function delete_plugin_database_tables(){
        global $wpdb;
        $tableArray = [   
          $wpdb->prefix . "table_name1",
          $wpdb->prefix . "table_name2",
          $wpdb->prefix . "table_name3",
          $wpdb->prefix . "table_name4",
       ];

      foreach ($tableArray as $tablename) {
         $wpdb->query("DROP TABLE IF EXISTS $tablename");
      }
    }

    register_uninstall_hook(__FILE__, 'delete_plugin_database_tables');

Referenz-Links:

https://developer.wordpress.org/reference/functions/register_uninstall_hook/https: //developer.wordpress .org/plugins/plugin-basics/uninstall-methods/

0
Gufran Hasan