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