Skip to main content

Crear una tabla en wordpress

En este ejemplo nos ha surgido la necesidad de crear una tabla en la base de datos de wordpress para guardar unos registros, para ello vamos a utilizar la función dbDelta, el código sería el siguiente:

require './wp-load.php';
require './wp-admin/includes/upgrade.php';

global $wpdb;

$prefix = $wpdb->prefix;

$crearTabla = "CREATE TABLE IF NOT EXISTS `".$prefix."bloques_datos2` (
  `id_bloque_dato` int(11) NOT NULL AUTO_INCREMENT,
  `id_post` int(11) NOT NULL,
  `id_bloque` int(11) NOT NULL,
  `bloque` varchar(255) NOT NULL,
  `key_bloque` varchar(255) NOT NULL,
  `valor_bloque` longtext NOT NULL,
  `id_subbloque` int(11) NOT NULL,
  `key_subbloque` varchar(255) NOT NULL,
  `valor_subbloque` longtext NOT NULL,
  PRIMARY KEY (`id_bloque_dato`),
  KEY `id_bloque` (`id_bloque`),
  KEY `id_post` (`id_post`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8";

dbDelta($crearTabla);

Explicación del código

Lo primero que hay que hacer es cargar los ficheros wp-load.php y upgrade.php (en el caso de que ya estén cargados no es necesario, en este ejemplo el código esta en un fichero fuera de la jerarquía de wordpress).

Con «$prefix = $wpdb->prefix;» obtenemos el prefijo de las tablas para incorporarlo a la query.

$crearTabla contiene el «Create table» que va a ejecutar dbDelta, que es la función que se encargara de ejecutar la consulta pasada.

Pruebas realizadas con la versión 5.4.1 de wordpress.

PD: En el caso de no funcionar, comprobar que el «Create table» es correcto.