Löschen Plugin mit Datenbanken und Optionen

  • Guten Morgen an alle,

    ich habe ein Plugin, das erstellt in der Tabelle "optionen" verschiedenen Einträge und erzeugt verschieden Tabellen.

    Jetzt möchte ich das Plugin löschen. Alle Tabellen und Optionen sollen auch gelöscht werden.

    Dafür habe ich wzei Functionen.

    PHP
    function delete_function() {
    delete_option('jal_db_version');
    delete_option('fb_meta_field');
    }
    function simple_uninstall() {
        global $wpdb;
        $table_name = $wpdb->prefix . 'test';
        $sql = "DROP TABLE IF EXISTS $table_name";
        $wpdb->query($sql);
      }

    Mit der Funkion "register_uninstall_hook"

    PHP
    if (function_exists ('register_uninstall_hook')) {
       register_uninstall_hook (__FILE__, 'simple_uninstall');
       register_uninstall_hook (__FILE__, 'delete_function');
    }

    Die Datenbank wird gelöscht aber die Optionen nicht.

    Kann mir jemand einen Tipp geben?

    Vielen Dank.


    maxe Edit: Code-Button

    Einmal editiert, zuletzt von maxe (21. August 2018 um 11:57)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • warum setzt du in das Plugin keine uninstall.php mit den delete_option() ?

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Danke für Deine Antwort.

    Das habe ich schon probiert. Ich habe in das VZ eine uninstall.php erstellt. Diese habe ich mit require_once( dirname( __FILE__) . '/uninstall.php')
    eingebunden.

    Der Aufruf erfolgt mit:

    if( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
    die;
    }


    $option_name = 'fb_meta_field';
    delete_option($option_name);

    global $wpdb;

    $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}test");

    Es kommt aber dann zu Fehler. Diese sind nicht "definiert" :-(

  • einfach im Plugin eine uninstall.php mit folgendem Inhalt anlegen:

    PHP
    <?php
    if( !defined( 'ABSPATH' ) && !defined( 'WP_UNINSTALL_PLUGIN' ) )
    exit();
    
    
    delete_option('jal_db_version');
    delete_option('fb_meta_field');
    
    
    ?>

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

    Einmal editiert, zuletzt von maxe (22. August 2018 um 08:27)

  • Danke.

    delete_option funktioniert.

    Kann ich auch die angelegte Tabelle löschen?

    global $wpdb;
    $table_name = $wpdb->prefix . 'test';
    $sql = "DROP TABLE IF EXISTS $table_name";
    $wpdb->query($sql);
    //delete_option($jal_db_version);

  • Die Datenbank wird gelöscht aber die Optionen nicht.


    Ich dachte das würde schon längst funktionieren ??

    Ich tät's mal so probieren:

    PHP
    <?php
    function delete_test_table() {
      global $wpdb;
      $table_name = $wpdb->prefix . "test";
      $sql = "DROP TABLE IF EXISTS `" . $table_name . "`";
      $wpdb->query($sql);
    }
    register_deactivation_hook( __FILE__, 'delete_test_table' );
    ?>

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

    2 Mal editiert, zuletzt von maxe (21. August 2018 um 17:20)

  • Moin,

    leider nicht. Auch mit Deiner Anleitung nicht.

    Die verschiedenen Einträge in der Tabelle optionen werden gelöscht. Aber die Tabelle "Test" nicht. Als wenn die Funktion nicht angesprochen wird.

    Muss ich die Funktion noch in der übergeordneten Datei aufrufen?

    In der Datei simple.php steht:

    require_once( dirname( __FILE__) . '/install.php');
    require_once( dirname( __FILE__) . '/uninstall.php');

    register_activation_hook (__FILE__, 'simple_install');
    register_activation_hook (__FILE__, 'simple_install_data');

    Danke für Deine Hilfe.

    Ich habe schon verschiedene Vorschläge ausprobiert, doch leider ohne Erfolg. :-(

  • heißt die Tabelle denn wirklich nur "Test" (richtige Schreibweise?)? Dann versuch es so:

    PHP
    function delete_test_table() {
      global $wpdb;
      $wpdb->query( "DROP TABLE IF EXISTS Test" );
    }
    register_deactivation_hook( __FILE__, 'delete_test_table' );

    Wenn der Hook trotzdem nicht will, versuch es direkt in der uninstall.php

    PHP
    if( !defined( 'ABSPATH' ) && !defined( 'WP_UNINSTALL_PLUGIN' ) )
    exit();
    
    
    global $wpdb;
    $wpdb->query( "DROP TABLE IF EXISTS Test" );
    
    
    delete_option('jal_db_version');
    delete_option('fb_meta_field');

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Hallo Maxe,

    wenn ich das so mache, dann wird die Tabelle Test nicht angelegt. Mache ich das wieder mit der function delete_test_table()
    dann wird die Tabelle angelgt, aber nicht gelöscht.

    Vielen Dank für Deine Hilfe.

  • hmm, die uninstall.php sollte nix mit dem anlegen der Tabelle zu tun haben.

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!