Icono del sitio Imacreste

Activar, desactivar y desinstalar plugins de WordPress

Cuando estamos creando un plugin para wordpress en ocasiones tenemos que realizar ciertas tareas previas para que nuestro plugin funcione, y cuando sea desinstalado nuestro plugin lo normal deshacer esas tareas. Para ello WordPress nos ofrece funciones especiales que se ejecutan en el momento de activar, desactivar o desinstalar nuestro plugin.

Activando un plugin

En primer lugar, hay que pensar que cuando un usuario se instala nuestro plugin no debemos realizar nada, en cierto modo solo lo tiene visible en su sitio pero no lo ésta usando. Pero cuando decide instalarlo, debemos realizar todos los preparativos para que nuestro plugin funcione de forma adecuada.

Normalmente, suelen crearse variables globales o creación de tablas específicas para el almacenamiento de información lo suficientemente compleja como para separarlo de las tablas básicas de WordPress.

function myplugin_activate() {
// código
}
register_activation_hook( __FILE__, 'myplugin_activate' );

Supongamos que cuando se instale nuestro plugin, vamos a recoger datos privados de los clientes y lo haremos en otras tablas ajenas a WordPress que nos permitan mantenerlos más seguros y encriptados si es necesario.

function myplugin_activate() {
$table_name=$wpdb->prefix.'datos_privados';
$sql = "Create table $table_name (
id int(100) NOT NULL AUTO_INCREMENT,
colesterol text NOT NULL
)
";
require_once(ABSPATH.'wp-admin/includes/upgrade.php');
dbDelta($sql);
} 
register_activation_hook( __FILE__, 'myplugin_activate' );

Con este código cuando un usuario active nuestro plugin se generara una tabla en la base de datos.

Antes de crear tablas es importante pensar si es necesario, solo es recomendable si la información que se guardara será mucha y muy diferenciada de las funcionalidades básicas de WordPress. Por ejemplo, si nuestro plugin es un gestor de formularios con preguntas anidadas, etc.

Desactivar un plugin

Aunque existe una función que se ejecuta al desactivar un plugin, piense que desactivar no es lo mismo que desinstalar. Piense que un usuario puede desinstalar para depurar un error y que lo puede volver a activar, ¿Es lógico que borre las tablas de la base de datos de su plugin?

function myplugin_desactivate() {
// código
}
register_deactivation_hook( __FILE__, 'myplugin_desactivate' );

Desinstalar plugin

Hay 2 formas de desinstalar un plugin, la primera es mediante la función register_uninstall_hook(__FILE__,’funcion_delete’); que no es la más ‘lógica’ ya que se ejecuta dentro de un fichero que queremos borrar, la otra forma es la de crear un fichero de desinstalación personalizado con el nombre: uninstall.php.

if (!defined('ABSPATH') && !defined('WP_UNINSTALL_PLUGIN')) exit();
//eliminar base de datos
global $wpdb;
//Borrar tabla de mysql
$table_name=$wpdb->prefix.'datos_privados';
$wpdb->query( "DROP TABLE $table_name");
delete_option('imacPrestashop_options');

En la primera línea comprobamos que no se intenta borrar el plugin desde fuera del administrador de WordPress, y luego borramos una tabla creada en la activación y eliminamos las variables almacenadas desde los ajustes del plugin.

Salir de la versión móvil