Utworzyłem wtyczkę i chcę dodać funkcję usuwania moich tabel z bazy danych, gdy użytkownik usunie moją wtyczkę. Utworzyłem funkcję, która usuwa tabele z bazy danych, gdy użytkownik dezaktywuje moją wtyczkę, ale nie chcę tego. Oto kod:
// 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' );
Jak widać, ta funkcja usuwa tabele po dezaktywacji wtyczki, ale muszę to zrobić po usunięciu wtyczki.
Odpowiedzi:
Możesz to zrobić za pomocą obsługi deinstalacji WordPress.php:
Ten plik uninstall.php jest wywoływany po usunięciu wtyczki.
źródło
Wprowadź kod tutaj:
źródło
Musisz użyć
register_uninstall_hook
haka zamiastregister_deactivation_hook
usuwać tabele z bazy danych.register_deactivation_hook
uruchamia się, gdy dezaktywujemy wtyczkę, iregister_uninstall_hook
uruchamia się, gdy chcemy, abyremove/delete
nasza wtyczka.Użyj tego kodu, jeśli masz tylko jedną tabelę:
Jeśli masz więcej niż dwie tabele, użyj tego kodu:
Linki referencyjne:
https://developer.wordpress.org/reference/functions/register_uninstall_hook/ https://developer.wordpress.org/plugins/plugin-basics/uninstall-methods/
źródło
Jeśli używasz „WORDPRESS PLUGIN BOILERPLATE GENERATOR” wppb
przejdź do zawiera \ class -...- dezaktywator.php
i napisz następujący kod (zmodyfikuj zgodnie ze swoimi potrzebami)
Dzięki
źródło
Wiem, że istnieje taki haczyk:
register_deactivation_hook
możesz używać do robienia rzeczy, gdy wtyczka jest wyłączona. Przejrzyj dokumentację i sprawdź, czy tego właśnie szukasz.Na przykład:
źródło
Niestety WordPress nie udostępnia funkcji, aby to zrobić. Obsługuje tylko hak register_uninstall_hook. Ten hak jest wywoływany, gdy użytkownik kliknie link odinstalowujący, który wzywa do odinstalowania wtyczki. Link nie będzie aktywny, dopóki wtyczka nie przejdzie do akcji. patrz http://codex.wordpress.org/Function_Reference/register_uninstall_hook
oraz hak register_deactivation_hook. Większość programistów wtyczek dodaje pole wyboru do tabeli ustawień za pomocą get_option, update_option. Gdy ta opcja jest zaznaczona, dane są usuwane.
W ten sposób tymczasowa dezaktywacja nie resetuje tabeli opcji wtyczki.
źródło