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í:

Base de datos inicial
Base de datos inicial

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:

Activación plugin en WordPress
Activación plugin en WordPress

Al activar plugin, se ejecuta el activate y se crea la tabla:

Creación table en activación plugin de WordPress
Creación table en activación plugin de WordPress

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