Boilerplate WordPress plugin – Base de datos
Veamos el código y qué ficheros se implementan para que se creen las tablas de la base de datos cuando activamos plugin y que se borren las tablas cuando desactivamos el plugin en Wordpres. Boilerplate WordPress plugin – Base de datos.
Primero debemos dejar claro dos cosas:
- Por un lado, crearemos o borraremos totalmente las tablas de nuestro plugin al activar o desactivar el plugin.
- Por otro lado, inicialmente lo haremos de la manera más sencilla, sin controlar versiones.
Otra cosa, el plugin que estamos creando se llama feed-directory. Si el vuesto lo habéis registrado con otro nombre, deberéis cambiarlo todo por vuestro nombre.
La base de datos inicial
Inicialmente la base de datos, la tendríamos así:
Fijaos que estan las tablas iniciales de WordPress. Nuestro objetivo es que al activa el plugin se cree la tabla wp_feed_directory_canales
Veamos qué ficheros y código hay que tocar:
Crear tabla al activar plugin
El fichero que debemos modificar es:
/wp-content/plugins/feed-directory/includes/class-feed-directory-activator.php
El código que debe contener sería:
class Feed_Directory_Activator {public function activate() {
self::create_db();
}
public static function create_db() {
global $wpdb;
$table_name = $wpdb->prefix . "feed_directory_canales";
$charset_collate = $wpdb->get_charset_collate();
$sql[] = "CREATE TABLE " . $table_name . " (
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
canal varchar(255) DEFAULT '',
ultima_actuzalizacion date DEFAULT '0000-00-00',
descripcion text, PRIMARY KEY (id) ) $charset_collate";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
}
En negrita, todo lo añadido. Por una parte, en la función activate, que es la registrada cuando se activa el plugin, llamamos a la función que declaramos posteriormente, create_db().
En la función create_db() tenemos la secuencia que crea la tabla en la base de datos.
Eliminar tabla al desactivar plugin
Por otro lado, para borrar la tabla cuando se desactiva el plugin, el fichero a modificar es:
/wp-content/plugins/feed-directory/includes/class-feed-directory-deactivator.php
El código que debe contener es:
class Feed_Directory_Deactivator {public static function deactivate() {
self::drop_db();
}public static function drop_db() {
global $wpdb;
$table_name = $wpdb->prefix . "feed_directory_canales";
$sql = "DROP TABLE IF EXISTS " . $table_name;
$wpdb->query($sql);
}
}
Como podéis ver, en deactivate() llamamos a la función que hemos creado, drop_db(). En esta última nos encargamos de eliminar la tabla.
Base de datos al activa plugin
Iríamos a los plugins, en el listado encontraríamos el nuestro, y lo activaríamos:
Al activar plugin, se ejecuta el activate y se crea la tabla:
Vuelvo a repetir que esta vez, al ser el primer contacto, no tendremos en cuenta las versiones: qué modificaciones debemos hacer en la base de datos según la versión del plugin que el usuario tenga instalada.
Espero que os haya sido de utilidad el artículo Boilerplate WordPress plugin – Base de datos.
Más información