Exclui tabelas do banco de dados ao excluir o plugin

8

Eu criei um plug-in e quero adicionar uma função para excluir minhas tabelas do banco de dados quando um usuário exclui meu plug-in. Eu criei uma função que exclui tabelas do banco de dados quando um usuário desativa meu plug-in, mas não quero isso. Aqui está o código:

// 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' );

Como você pode ver, esta função apaga as tabelas quando o plugin é desativado, mas eu preciso fazer isso quando o plugin é deletado.

    
por Zzuum 21.11.2014 / 22:38

3 respostas

15

Você pode fazer isso usando o suporte ao uninstall.php do WordPress:

<?php
    if( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) exit();
    global $wpdb;
    $wpdb->query( "DROP TABLE IF EXISTS NestoNovo" );
    delete_option("my_plugin_db_version");
?>

Este arquivo uninstall.php é chamado quando seu plugin é deletado.

    
por johnh10 20.12.2014 / 16:29
5

Digite o código aqui:

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");
}   
    
por user106916 05.04.2017 / 13:39
-1

Eu sei que há esse gancho chamado: register_deactivation_hook que você pode usar para fazer coisas quando o plugin é desativado . Dê uma olhada na documentação e veja se é o que você está procurando.

Por exemplo:

**register_deactivation_hook**(__FILE__, 'sm_deactivation');
function myplugin_deactivation(){
/*
     Stuff
*/}
    
por Luca Marzi 19.09.2016 / 09:47