Hook al activar o desacivar un plugin de WordPress

Guardar este artículo en Delicious Compartir este artículo en Twitter Compartir este artículo en Facebook

Si eres desarrollador de plugins de WordPress, te habrá pasado alguna vez que has querido que se ejecute alguna acción cuando un usuario instala uno de tus plugins o cuando lo desinstala. Un ejemplo claro es que tu plugin necesite una tabla de base de datos adicional, y necesite que ésta se cree al activar el plugin. Al igual que al desinstalar el plugin podría ser que esa tabla ya no sirva y quieras que se borre.

Para ello WordPress nos ofrece dos funciones que nos permitirán que se ejecute algo al activar o desactivar un plugin, estas funciones son register_activation_hook y register_deactivation_hook. Se puede ver su modo de empleo en las siguientes líneas de código que simulan la situación que he expuesto antes:

<?php

register_activation_hook( __FILE__, 'plugin_name_activate' );
register_deactivation_hook( __FILE__, 'plugin_name_deactivate' );

function plugin_name_activate() {
	global $wpdb;
	$sql = 'CREATE TABLE `' . $wpdb->prefix . 'plugin_name`
		( `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
		`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
		`otro` VARCHAR( 255 ) NOT NULL )
	';
	$wpdb->query($sql);

}

function plugin_name_deactivate() {
	global $wpdb;
	$sql = 'DROP TABLE `' . $wpdb->prefix . 'plugin_name`';
	$wpdb->query($sql);

}

?>

A mi me han sido de utilidad en más de una ocasión, ya me contaréis.

1 Comentario
  1. Armando Borge

    Gracias por la info…

    Tengo una pregunta, que sucede si tengo mi funcion que crea todas las tablas en un archivo separado y quiero ejecutarla en el hook… ???

    add_action( ‘activate’.$PluginPath.’functionfile.php’ , ‘mifunction’);

    Intente Eso pero no funciona…
    Alguna idea ???
    Gracias

Deja un comentario