Löschen Sie beim Löschen des Plugins Tabellen aus der database

Ich habe ein Plugin erstellt und möchte eine function hinzufügen, um meine Tabellen aus der database zu löschen, wenn ein Benutzer mein Plugin löscht. Ich habe eine function erstellt, die Tabellen aus der DB 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 function Tabellen, wenn das Plugin deaktiviert ist, aber das muss ich tun, wenn das Plugin gelöscht wird.

Solutions Collecting From Web of "Löschen Sie beim Löschen des Plugins Tabellen aus der database"

Leider stellt WordPress keine functionalität dafür zur Verfügung. Es unterstützt nur den Hook register_uninstall_hook. Dieser Hook wird aufgerufen, wenn der Benutzer auf den Deinstallationslink klickt, der die Deinstallation des Plugins anfordert. Der Link wird nur aktiv sein, wenn das Plugin sich an der Aktion beteiligt. siehe http://codex.wordpress.org/Function_Reference/register_uninstall_hook

und der Haken register_deactivation_hook. Was die meisten Plugin-Entwickler tun, ist, ein Kontrollkästchen zu der Einstellungstabelle hinzuzufügen, indem get_option, update_option verwendet wird. Wenn diese Option aktiviert ist, werden die Daten entfernt.

Auf diese Weise setzt die temporäre Deaktivierung die Optionstabelle Ihres Plugins nicht zurück.

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.

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

Ich weiß, dass es diesen Haken gibt: register_deactivation_hook , mit dem man Sachen machen kann, wenn das Plugin deaktiviert ist. Werfen Sie einen Blick auf die Dokumentation und sehen Sie, ob Sie danach suchen.

Zum Beispiel:

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