Plugins (XVII) Desinstalar un plugin

Una de las opciones que siempre se deben de introducir es la de desinstalar un plugin.

WP ofrece dos formas de registrar el desinstalador , ya sea utilizando el método uninstall.php o el conector de desinstalación, aunque los dos nos permiten desinstalar un plugin que este desactivado desde el panel de control.

uninstall.php

Es el método más usado, para ello se debe de crear un archivo uninstall.php dentro de la carpeta del plugin., en cuyo caso se ejecutará antes que el conector de instalación y cuyo contenido debe de ser el siguiente:

//Si no se puede invocar desinstalar/borrar desde wordpress ejecuta el exit
if(!defined('ABSPATH') && !defined('WP_UNINSTALL_PLUGIN')){
 exit();
}

//elimina las opciones de la tabla de opciones
delete_option('prowp_options_arr');

//eliminar otras opciones, tablas, datos personalizados...

Este código lo que hace es comprobar que se hayan definido las contantes ABSPATH y WP_UNINSTALL_PLUGIN, lo que significa que se han invocado desde WP. Esto es una medida de seguridad para garantizar que el archivo solo se ejecuta en el proceso de desinstalación.

Tras esto debemos de eliminar las opciones y tablas que haya creado el plugin, para ello utilizamos delete_option() eliminado la matriz de opciones.

Conector de desinstalación

Al eliminar un plugin si no existe uninstall.php pero sí el conector, el plugin se ejecutará una última vez para ejecutar el conector.

Para ello utilizamos el siguiente código:


register_uninstall_hook(__FILE__, 'prowp_uninstall_hook');

function prowp_uninstall_hook(){
//eliminar las opciones
}

Como de costumbre se debe de invocar a la función personalizada para desinstalar las opciones. Es recomendable avisar al usuario de que se van a eliminar datos y tablas.

Hay que tener en cuenta que cuando un plugin se desinstala se pierde toda la información que hubiera podido generar, mientras que si se desactiva la información queda en un segundo plano esperando a ser recuperada se se vuelve a activa.

En una desinstalación perfecta no debe de quedar ningún rastro del plugin.