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.