In breve, sì, la $wpdb
classe. Vedi Codice per maggiori informazioni.
Ogni volta che interagisci con una tabella personalizzata (o qualsiasi tabella, in realtà) dovresti passare $wpdb
, in particolare assicurati di avere familiarità con il prepare
metodo che può aiutare a sfuggire alle query e prevenire iniezioni.
Dovresti già avere familiarità con, come dovresti usarlo per creare la tabella. Sul gancio di installazione dovresti avere qualcosa del tipo:
$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);
Questo codice viene effettivamente eseguito ogni volta che viene attivato il plug-in (ovvero non solo installato). Quindi sarà eseguito quando qualcuno aggiorna il plug-in automatico . Nota: se si aggiornano sostituendo manualmente il plug-in, quindi non lo farà, quindi sarà necessario attivare il codice sopra admin_init
quando il plug-in viene aggiornato (memorizzare il numero di versione nella tabella delle opzioni, verificare con la versione corrente) .
Ora normalmente non si vorrebbe che il CREATE TABLE
comando SQL fosse in esecuzione ogni volta che si aggiorna il plug-in: qui è dove dBDelta()
entra in gioco.
Prima di eseguire il comando precedente, controlla se esiste la tabella. Inoltre, controlla i tipi di colonna. Quindi, se la tabella non esiste, la crea, in caso affermativo, ma alcuni tipi di colonna sono stati modificati, li aggiorna e se una colonna non esiste, la aggiunge.
Sfortunatamente, se rimuovi una colonna da quanto sopra, non rimuoverà automaticamente la colonna. Per rimuovere colonne / tabelle è necessario specificarle DROP
(verificandone l'esistenza prima di farlo).