Elimina le tabelle dal database durante l'eliminazione del plug-in


13

Ho creato un plug-in e desidero aggiungere una funzione per eliminare le mie tabelle dal database quando un utente elimina il mio plug-in. Ho creato una funzione che cancella le tabelle dal DB quando un utente disattiva il mio plugin, ma non lo voglio. Ecco il codice:

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

Come puoi vedere, questa funzione elimina le tabelle quando il plug-in è disattivato, ma devo farlo quando il plug-in viene eliminato.



Grazie per la risposta .. sì .. lo provo .. niente è successo ..: /
Zzuum

Risposte:


23

Puoi farlo usando il supporto di.php.php di WordPress:

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

Questo file uninstall.php viene chiamato quando il plugin viene eliminato.


8

Inserire il codice qui:

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

2

È necessario utilizzare register_uninstall_hookhook anziché register_deactivation_hookeliminare le tabelle dal database.

register_deactivation_hooksi attiva quando disattiviamo un plug-in e si register_uninstall_hookattiva quando vogliamo il remove/deletenostro plug-in.

Si prega di utilizzare questo codice se si dispone di una sola tabella:

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

Se hai più di due tabelle, allora usi questo codice:

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

Link di riferimento:

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


Grazie salva la mia giornata :)
Arman H

0

Se si utilizza "WORDPRESS PLUGIN BOILERPLATE GENERATOR" wppb

vai a include \ class -...- deactivator.php

e scrivi il seguente codice (modifica per favore secondo le tue esigenze)

global $wpdb;

    $tableArray = [
        $wpdb->prefix . "table1",
        $wpdb->prefix . "table2",
    ];
    foreach($tableArray as $table){
        $wpdb->query("DROP TABLE IF EXISTS $table");
    }

Grazie


-1

So che c'è questo hook chiamato: register_deactivation_hookche puoi usare per fare cose quando il plugin è disattivato. Dai un'occhiata alla documentazione e vedi se è quello che stai cercando.

Per esempio:

**register_deactivation_hook**(__FILE__, 'sm_deactivation');
function myplugin_deactivation(){
/*
     Stuff
*/}

-3

Sfortunatamente, WordPress non espone funzionalità per farlo. Supporta solo l'hook register_uninstall_hook. Questo hook viene chiamato quando l'utente fa clic sul collegamento di disinstallazione che richiede la disinstallazione del plug-in. Il collegamento non sarà attivo a meno che il plug-in non si agganci all'azione. vedi http://codex.wordpress.org/Function_Reference/register_uninstall_hook

e l'hook register_deactivation_hook. Quello che fa la maggior parte degli sviluppatori di plugin è aggiungere una casella di controllo alla tabella delle impostazioni con get_option, update_option. Quando questa opzione è selezionata, i dati vengono rimossi.

In questo modo, la disattivazione temporanea non reimposta la tabella delle opzioni del plug-in.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.