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.