Interagire con il Database di WordPress (Parte 1)

Stai sviluppando il tuo fantastico plugin e hai l’esigenza di salvare delle informazioni in maniera permanente sul DB di WordPress, come fai?

Se ti è venuta l’idea di usare mysqli fattela passare in fretta, perché WP ha un set comodissimo di API per lavorare con il database in maniera sicura e pulita

Innanzitutto hai due strade:

Salvare le informazioni nella tabella Options Creare delle tabelle personalizzate per il tuo plugin

La tabella Options

Solitamente tutte le informazioni di configurazione di WP e dei plugin vengono messe in questa tabella. Ed è quella che tratteremo in questo post.

Per lavorare con Option abbiamo quattro comandi comodissimi:

  • add_option()
  • update_option()
  • delete_option()
  • get_option()

Aggiungere un record con add_option()

L’interazione con la tabella option si effettua tramite delle dichiarazioni chiave/valore, che verranno inserite come dei nuovi record nel database.

Quindi per aggiungere un nuovo record basta solamente usare la funzione add_option, passandogli il nome di riferimento che vogliamo dare al dato e in seguito tutti i dati da inserire per quel determinato record:

add_option('chiave','valore');

Ricorda, se devi inserire parecchi valori oppure dati un poco sturatati, registra i valori come un array oppure utilizzando JSON, così da mantenere il DB più pulito possibile.

$myOptions = array(
   'firstOption' => 1,
   'secondOption' => 'antani'
);
add_option('ilmioplugin', $myOptions);

add_option() ritorna un valore booleano per indicarci se l’aggiunta è andata a buon fine oppure no

$myOptions = array(
   'firstOption' => 1,
   'secondOption' => 'antani'
);
if(!add_option('ilmioplugin', $myOptions)) {
   echo 'Error: qualquadra non cosa!';
}

Modificare un record con update_option()

Che CRUD sarebbe senza un update? La funzione update_option() permette di aggiornare i dati. L’utilizzo è il medesimo di add_option, e rimpiazza completamente i valori, quindi occhio!

update_option('ilmioplugin', 'nuovo valore');

Cancellare una opzione con delete_option()

Delete option è ancora più semplice , qui basta passare la chiave alla funzione option per cancellare un intero record. Una funzione tanto facile quanto spietata 🙂

delete_option('almaren'); //Se sei un fan di LOT l'hai capita

Richiedere un valore con get_option()

Se salviamo dei dati vorremmo anche richiamarli, mi pare ovvio! Con get_option() facciamo proprio questo, passandogli la chiave, riceveremo il valore del record richiesto

$val = get_option('laMiaOpzione'); 
echo $val->secondOption;

Aggiungere/aggiornare una option come un Ninja

Innanzitutto tutte queste funzioni ritornano un valore. Per quanto riguarda add_option(), update_option() e delete_option(), ritornano TRUE se l’operazione è andata a buon fine, mentre FALSE se c’è stato un errore. get_option() invece ritorna il valore della option se tutto è andato bene, mentre FALSE se trova un errore, come le altre funzioni.

Fatta questa premessa possiamo creare le nostre strutture a prova di bomba!

Se dobbiamo aggiornare una option, ad esempio attraverso un form, dobbiamo essere sicuri che esista, altrimenti verrà rigettata. Una maniera elegante è questa:

if(!update_option('ilmioplugin', 'nuovo valore')) {
  add_option('ilmioplugin', 'nuovo valore');
}

Inizialmente si tenta di fare un update e, sfruttando il valore di ritorno di update_option(), si controlla che effettivamente esiste già quel parametro. In caso contrario si entra nell’IF e lo si crea.