WordPress, utilizzare wpdb per estendere le funzionalità con interazioni database

By 17 agosto 2017Wordpress

Estendere le funzionalità di WordPress, con plugin, widget o shortcode, può richiedere di interagire direttamente con il database (wpdb).

Essendo un CMS molto diffuso ed affermato, WordPress mette a disposizione dell’utente parecchie classi per estendere le sue funzionalità, tra cui la classe WPDB.

Requisiti

  • Buona conoscenza WordPress e Php;
  • Buona conoscenza MySQL;
N.B. Quando si utilizzano le interazioni con il database, è importante prestare la massima attenzione. Un backup prima di qualsiasi azione, è sempre consigliato.

Eseguire una select sul database WordPress

L’esecuzione della query diventa estremamente facile, basta utilizzare $wpdb->get_results($query) per memorizzare, ad esempio, in una variable il risultato della query ed utilizzarlo in un eventuale costrutto foreach.
Ipotizzando dunque di avere una tabella con le seguenti colonne:

  • ID
  • nomepg
  • ruolo

per mostrare, riga per riga, nome e ruolo del personaggio sarà sufficiente creare una funzione simile a quella seguente:

function funzione_select_test()
{
  global $wpdb;
  $result = $wpdb->get_results("SELECT * FROM tabella_esempio ORDER BY rand() LIMIT 5");
  foreach($result as $row) {
    $content .= 'Nome del personaggio: '.$row->nomepg;.' | ruolo del personaggio: '.$row->ruolo.'<br/>';
  }
  return $content;
}

Analisi della funzione

global $wpdb permette di utilizzare la classe wpdb nella nostra funzione. $result memorizzerà al suo interno il risultato della query indicata, in questo caso, aggiungendo order by rand() limit 5 verranno prelevate dall tabella 5 righe in modo casuale. Il costrutto foreach, per ogni riga prelevata, memorizzerà nella variable $content l’html che con il return mostrerà in output.

Eseguire un insert sul database WordPress

L’esecuzione della query di inserimento è altrettanto facile, ed ipotizzando di avere la stessa tabella di prima, quindi con idnomepg ruolo sarà sufficiente procedere come segue:

function funzione_insert_test()
{
//* qui ci sarà tutta la parte relativa alle variabili ottenute ad esempio tramite una post */
$result = $wpdb->insert("tabella_esempio", array(
"nomepg" => $variabile-nuovo-nome,
"ruolo" => $variabile-ruolo
));
if ($result === 0) {
echo 'inserito';
/* qui ci saranno le azioni in caso di successo */
} else {
echo 'non inserito';
/* qui in caso di errore */
}
/* il resto della funzione */
}

Analisi della funzione

Si può notare come l’insert in questo caso non avviene tramite una query diretta, scritta quindi dall’utente, ma attraverso un array inviato tramite la funzione insert della classe wpdb. Per verificare l’esito della query, ad esempio, si può utilizzare la condizione ($result === 0), in caso $result corrisponda a 0, l’inserimento sarà avvenuto correttamente.

E adesso? Cosa si può fare?

Adesso si possono creare shortcode che utilizzino tabelle custom per mostrare statistiche, o dati non direttamente prelevati dalle tabelle di WordPress. Si possono creare sezioni complesse e plugin per l’amministrazione e non ultimo durante l’inserimento dei dati, si possono aggiungere uno o più controlli di sicurezza per evitare il mysql injection.

Ethernaly

Author Ethernaly

More posts by Ethernaly

Leave a Reply

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi