Tabelle di database personalizzate in WordPress: prima parte

Pubblicato: 2022-06-27

In questa serie di articoli, daremo un'occhiata a come creare tabelle di database personalizzate in WordPress con o senza un plug-in.

Quando e perché dovrei utilizzare tabelle di database personalizzate?

Nella maggior parte dei casi, le tabelle del database WordPress predefinite che vengono create durante l'installazione di WordPress sono tutto ciò di cui avrai bisogno. Queste tabelle contengono tutti i tipi di informazioni come i tipi di post e i metadati associati. Quindi, perché avresti bisogno di una tabella di database personalizzata?

Questi si manifestano quando lavori con dati che non rientrano nelle normali informazioni utilizzate in WordPress. Pertanto, potresti voler inserire i dati in una tabella personalizzata quando crei un plug-in che deve archiviare informazioni in un database. È per questo motivo che vedrai che plugin come WooCommerce hanno le proprie tabelle personalizzate.

Ospita il tuo sito web con Pressidium

GARANZIA DI RIMBORSO DI 60 GIORNI

GUARDA I NOSTRI PIANI

Oltre a essere un modo più ordinato per archiviare le informazioni, l'uso di tabelle separate può aiutare a migliorare le prestazioni poiché le query utilizzate non devono cercare tra righe e righe di dati non necessari. Invece, possono essere indirizzati alla tabella "giusta" dove possono trovare le informazioni richieste in modo più rapido ed efficiente. Questo diventa molto importante quando le tabelle del database iniziano a crescere.

Creazione di una tabella di database personalizzata di WordPress

Diciamo che vogliamo costruire un semplice plugin che ci aiuti a organizzare un elenco di studenti. In realtà, un'operazione semplice come questa significa che non è necessario utilizzare tabelle personalizzate. Un tipo di post personalizzato farebbe perfettamente il lavoro.

Tuttavia, per il bene di questo esempio, questo tipo di dati è perfetto per dimostrare la teoria alla base delle tabelle personalizzate, quindi eseguiremo con esso. Nota: supponiamo che tu possieda alcune conoscenze di base di PHP e MySQL.

Iniziare

Per iniziare, creeremo una tabella di database "studenti" con colonne per nome, età, e-mail e un ID univoco. Lo faremo creando un plug-in personalizzato per portare a termine il lavoro.

NOTA: se non hai già familiarità con come creare un plug-in personalizzato, consulta la nostra guida su come creare il tuo plug-in WordPress personalizzato prima di riprendere questo tutorial!

Crea i file plug-in

Creeremo una cartella chiamata “my-custom-db-tables” nella cartella dei plugin e al suo interno un file chiamato “my-custom-db-tables.php” che contiene questo pezzo di codice:

 <?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { // THE CODE } register_activation_hook(__FILE__, 'create_the_custom_table');

Quello che abbiamo fatto è stato introdurre le informazioni sul plug-in in modo che WordPress riconoscesse il plug-in. Ovviamente, avrai anche bisogno di una funzione che aggiunga lo schema della tabella al database che sarà la funzione create_the_custom_table() .

Nella maggior parte dei casi, è necessario eseguire questa funzione solo una volta, idealmente quando il plug-in è attivato. Pertanto, abbiamo utilizzato register_activation_hook() fornito da WordPress per assicurarci che la funzione venga eseguita all'attivazione del plug-in.

Definisci la struttura della tabella

Ovviamente non accadrà ancora nulla se attiviamo il plugin, in quanto la funzione è ancora vuota. Quindi andiamo a compilarlo con questo codice, in modo da creare effettivamente la tabella:

 <?php /* Plugin Name: My Custom DB Tables Description: A plugin for registering my students Author: Tassos Antoniou */ function create_the_custom_table() { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $table_name = $wpdb->prefix . 'students'; $sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } register_activation_hook(__FILE__, 'create_the_custom_table');

Ora fermiamoci un momento per esaminare cosa abbiamo fatto con questo pezzo di codice.

Prima di tutto, prendiamo il prefisso della tabella usando la classe globale $wpdb WordPress che comunica con il database. È lo stesso prefisso definito nel file wp-config.php ed è buona norma utilizzarlo anche nella tabella personalizzata. Inoltre, erediteremo le regole di confronto correnti salvandole nella variabile $charset_collate per impostarle più avanti nella query.

Il nostro prossimo passo è definire la struttura della tabella nella query sql per ottenere lo schema desiderato correttamente. Come abbiamo detto, una colonna ID, email, nome ed età con il giusto tipo di dati per ciascuno.

 $sql = "CREATE TABLE " . $table_name . " ( id int(11) NOT NULL AUTO_INCREMENT, name tinytext NOT NULL, email VARCHAR(100) NOT NULL, age int(11) NULL, PRIMARY KEY (id) ) $charset_collate;";

Successivamente, require_once il file upgrade.php . Questo è obbligatorio per utilizzare la funzione dbDelta che arriva subito dopo. Quando su WordPress, per creare una tabella di database (o aggiornare le tabelle esistenti a una nuova struttura), dobbiamo utilizzare la funzione dbDelta.

NOTA: invece di eseguire direttamente una query SQL, questa funzione viene utilizzata per modificare il database creando o aggiornando una tabella, in base alle istruzioni SQL specificate. Usando il suo parametro $queries , possiamo passare lo schema della nostra tabella personalizzata.

Ora se attivi il plugin e controlli il tuo database, dovresti vedere che la tabella è stata creata.

Ora, se leggi il file wp-admin/includes/upgrade.php , noterai che dbDelta() usa la funzione preg_match() per recuperare informazioni dall'istruzione SQL. Per questo motivo, devi stare attento quando lo modifichi. La documentazione ufficiale fornisce maggiori informazioni al riguardo, ma abbiamo evidenziato i punti chiave di seguito:

  • È necessario inserire ogni campo su una propria riga nell'istruzione SQL.
  • Devi avere due spazi tra le parole CHIAVE PRIMARIA e la definizione della tua chiave primaria.
  • Devi utilizzare la parola chiave KEY anziché il suo sinonimo INDEX e devi includere almeno una KEY.
  • KEY deve essere seguito da un singolo spazio , quindi il nome della chiave, quindi uno spazio, quindi parentesi aperta con il nome del campo, quindi una parentesi chiusa.
  • Ad altre KEY oltre a quelle primarie dovrebbe essere assegnato un nome. Per esempio:
 ... PRIMARY KEY (id), KEY age (age) ...
  • Non devi usare apostrofi o backtick intorno ai nomi dei campi.
  • I tipi di campo devono essere tutti minuscoli .
  • Le parole chiave SQL, come CREATE TABLE e UPDATE, devono essere maiuscole .
  • È necessario specificare la lunghezza di tutti i campi che accettano un parametro di lunghezza, ad esempio int(11) della colonna id.

Potresti anche aver notato che non abbiamo verificato se la tabella esiste già nel database. Questo perché dbDelta lo fa per noi. Non c'è bisogno di preoccuparsi delle query di aggiornamento. Non solo creerà la tabella, ma verificherà se esiste già una tabella con lo stesso nome e, in tal caso, non creerà la tabella. Aggiornerà la struttura della tabella esistente solo se necessario.

Ne tratteremo di più nei futuri articoli della serie.

Funzionalità e scalabilità

Quindi, cosa dovrebbe succedere quando il plug-in viene disattivato o disinstallato? Idealmente, dovrebbe esserci un'opzione di amministrazione per scegliere se eliminare questa tabella o meno dal database se e quando il plug-in viene disattivato o eliminato.

Inoltre, scoprirai quasi sicuramente prima o poi che dovrai cambiare il tuo plugin (per migliorarlo o appianare un bug). Forse vuoi modificare il modo in cui memorizza i dati, aggiungere colonne alla tabella o cambiarne il design. Ciò significa che dovresti creare il plug-in in un modo che garantisca che sia il più scalabile possibile e possa adattarsi a tutte le modifiche apportate.

Nei nostri prossimi articoli di questa serie, analizzeremo questi argomenti e ti mostreremo come puoi farlo. Torna presto!