Wie lösche ich Tabellen bei der Deinstallation mit WordPress?

Lesezeit: 5 Minuten

Benutzeravatar von jameslcarton
jameslkarton

Bei der Plugin-Aktivierung habe ich 4 Tabellen, die in der WordPress-Datenbank erstellt werden.

Bei der Deinstallation möchte ich die Tabellen gelöscht haben.

Ich konnte es ausschreiben, um die Tabellen bei der Deaktivierung zu löschen. Aber nach dem, was ich gelesen habe, ist es besser, die Informationen der Datenbanktabellen aufzubewahren, bis der Administrator deinstalliert, anstatt sie zu deaktivieren.

Ich habe nach Antworten gesucht, aber alles, was ich zu finden scheine, ist, sie bei der Deaktivierung fallen zu lassen. Ich habe auch die Versionsoption, die ich damit deinstallieren muss.

Benutzeravatar von madlopt
verrückt

Sie sollten nicht machen deinstallieren.php wie bhuthecoder sagte. Sie können die Datei so benennen, wie Sie möchten, oder Sie können dies in einer einzelnen Datei ohne separate Datei für die Deinstallation tun.

register_uninstall_hook('uninstall.php', 'on_uninstall');

Das bedeutet, dass WP ausgeführt wird deinstallieren.php und Funktion on_uninstall in dem deinstallieren.php wann das Plugin gelöscht wird. Sie können also die Datei umbenennen, wenn Sie möchten, Sie können die Funktion umbenennen.

register_uninstall_hook(__FILE__, 'on_uninstall');

Es bedeutet dasselbe, aber __FILE__ Zeigt die aktuelle Datei an, die jetzt funktioniert, und funktioniert on_uninstall sollte in dieser Datei stehen.

__DATEI__ php.net

Der vollständige Pfad und Dateiname der Datei mit aufgelösten Symlinks. Bei Verwendung innerhalb eines Include wird der Name der eingebundenen Datei zurückgegeben.

Einfaches Funktionsbeispiel zur Aktivierung/Deaktivierung/Deinstallation.

function on_activation()
{
    //Some stuff
}

function on_deactivation()
{
    //Some stuff
}

function on_uninstall()
{
    //Some stuff
}

register_activation_hook(__FILE__, 'on_activation');
register_deactivation_hook(__FILE__, 'on_deactivation');
register_uninstall_hook(__FILE__, 'on_uninstall');

Wenn Sie einige Optionen hinzugefügt haben, können Sie diese bei der Deinstallation wie folgt löschen:

delete_option( 'some name' );

Wie bhuthecoder gesagt, man sollte beim Deaktivieren keine Tabellen löschen, es ist redundant und nicht freundlich für einen Benutzer, der seine Daten nach dem Deaktivieren verlieren kann.

Es gibt Syntaxfehler in Ihrem Code:

$sql="DROP TABLE IF EXISTS $table_name;";

Sollte so sein:

$sql = "DROP TABLE IF EXISTS $table_name";

Wenn Sie eine Variable in den String einfügen möchten, sollten Sie doppelte Anführungszeichen verwenden.

Und require_once ist überflüssig. Besser so:

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

register_uninstall_hook(__FILE__, 'e34s_db_clients_uninstall');

Oder so:

register_uninstall_hook('uninstall.php', 'e34s_db_clients_uninstall');

Mit Funktion e34s_db_clients_uninstall in dem deinstallieren.php.

Es gibt zwei Möglichkeiten, diesen Vorgang beim Deinstallieren/Löschen des Plugins durchzuführen.

Der beste Weg, den ich gelernt habe, ist die Verwendung von uninstall.php

uninstall.php wird nur geladen, wenn ein Plugin entfernt oder aus den Plugins gelöscht wird. Sie können beliebigen Code einfügen, der ausgeführt wird, wenn der Benutzer ein Plugin löscht oder deinstalliert.

<?php
/* 
 * Removing Plugin data using uninstall.php
 * the below function clears the database table on uninstall
 * only loads this file when uninstalling a plugin.
 */

/* 
 * exit uninstall if not called by WP
 */
if ( !defined( 'WP_UNINSTALL_PLUGIN' ) ) {
    exit();
}

/* 
 * Making WPDB as global
 * to access database information.
 */
global $wpdb;

/* 
 * @var $table_name 
 * name of table to be dropped
 * prefixed with $wpdb->prefix from the database
 */
$table_name = $wpdb->prefix . 'table_name_to_be_dropped';

// drop the table from the database.
$wpdb->query( "DROP TABLE IF EXISTS $table_name" );

ändern Sie “table_name_to_be_dropped” durch Ihren Tabellennamen.

Benutzeravatar von Omar Tariq
Omar Tarik

Nun, ich habe viele Ergebnisse erhalten, als ich dieses Problem gegoogelt habe. Hier ist, was ich habe: –

function mr_np_activate(){
    // hook uninstall
    if ( function_exists('register_uninstall_hook') )
        register_uninstall_hook(__FILE__,'mr_np_uninstall');        
}
register_activation_hook(__FILE__,'mr_np_activate');    

function mr_np_uninstall() {
    delete_option('my_plugins_options'); 
}

Quelle: https://wordpress.stackexchange.com/questions/24600/how-can-i-delete-options-with-register-uninstall-hook

Für mehr Information: http://codex.wordpress.org/Function_Reference/register_uninstall_hook

Verwenden, register_uninstall_hook. Es registriert den Deinstallations-Hook, der aufgerufen wird, wenn der Benutzer auf den Deinstallationslink klickt, der das Plugin auffordert, sich selbst zu deinstallieren, um Details zu überprüfen http://codex.wordpress.org/Function_Reference/register_uninstall_hook

Benutzeravatar von bhuthecoder
bhuthecoder

Löschen Sie Tabellen nur, wenn der Administrator das Plugin deinstalliert/löscht.

Löschen Sie keine Tabellen, wenn der Administrator das Plugin deaktiviert, da Benutzer normalerweise alle Plugins deaktivieren, um die WordPress-Fehler zu beheben, nachdem sie die Plugins behoben haben, werden sie die Plugins erneut aktivieren. Auch während des Upgrades deaktiviert WordPress automatisch alle Plugins und reaktiviert nach erfolgreichem Upgrade.

Anweisungen zum Löschen von Tabellen während der Deinstallation:

  • 1) Zuerst müssen Sie unistall.php in Ihrem Plugin-Root-Ordner erstellen. Diese Datei wird automatisch von WordPress aufgerufen, wenn der Benutzer auf die Schaltfläche „Löschen“ klickt. Sie können Ihren Code in diese Datei einfügen.
  • 2) Muss die vollständige Dokumentation dazu in lesen http://codex.wordpress.org/Function_Reference/register_uninstall_hook

  • Ja, das habe ich gesehen und deshalb habe ich nach einer Lösung gefragt, um die erstellten Tabellen beim Löschen zu löschen, anstatt sie zu deaktivieren

    – jameslcarton

    6. Januar 2014 um 15:27 Uhr

  • hinzugefügt Anweisungen überprüfen Sie es

    – bhuthecoder

    7. Januar 2014 um 10:58 Uhr

Verwenden Sie register_deactivation_hook. das ist Arbeit für mich.

function on_deactivation() {

    global $wpdb;
    $table_name = $wpdb->prefix . 'school';
    $sql        = "DROP TABLE IF EXISTS $table_name";
    $wpdb->query( $sql );
    delete_option( 'wp_install_uninstall_config' );
}

register_deactivation_hook( __FILE__, 'on_deactivation' );

  • Ja, das habe ich gesehen und deshalb habe ich nach einer Lösung gefragt, um die erstellten Tabellen beim Löschen zu löschen, anstatt sie zu deaktivieren

    – jameslcarton

    6. Januar 2014 um 15:27 Uhr

  • hinzugefügt Anweisungen überprüfen Sie es

    – bhuthecoder

    7. Januar 2014 um 10:58 Uhr

1398380cookie-checkWie lösche ich Tabellen bei der Deinstallation mit WordPress?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy