En resumen, sí, la $wpdb
clase. Ver Codex para más información.
Cada vez que interactúa con una tabla personalizada (o cualquier tabla, en realidad) que debe pasar por $wpdb
- en particular asegurarse de que está familiarizado con el prepare
método que ayuda lata escapa consultas y evitar las inyecciones.
Ya debería estar familiarizado, ya que debería estar usándolo para crear la tabla. En su gancho de instalación, debería tener algo como:
$charset_collate = '';
if ( ! empty($wpdb->charset) )
$charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
if ( ! empty($wpdb->collate) )
$charset_collate .= " COLLATE $wpdb->collate";
//Create custom table
$sql_custom_table ="CREATE TABLE {$wpdb->prefix}my_table (
id bigint(20) unsigned NOT NULL auto_increment,
column_a varchar(255) default NULL,
column_b varchar(255) default NULL,
PRIMARY KEY (id)
) $charset_collate; ";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql_custom_table);
Este código se ejecuta cada vez que se activa el complemento (es decir, no solo se instala). Por lo tanto, se ejecutará cuando alguien actualice el complemento automáticamente . Nota: Si se actualizan reemplazando el complemento manualmente, entonces no lo hará, por lo que deberá activar el código anterior admin_init
cuando se actualice su complemento (almacene el número de versión en la tabla de opciones, verifique con la versión actual) .
Ahora, normalmente no desea que el CREATE TABLE
comando SQL se ejecute cada vez que actualice el complemento, aquí es donde dBDelta()
entra.
Antes de ejecutar el comando anterior, comprueba si la tabla existe. Además, verifica los tipos de columna. Entonces, si la tabla no existe, la crea, si es así, pero algunos tipos de columnas han cambiado, las actualiza y, si no existe una columna, la agrega.
Desafortunadamente, si elimina una columna de lo anterior, no elimina automáticamente la columna. Para eliminar columnas / tablas, debe especificarlas específicamente DROP
(verificando que existan antes que usted).