
Volendo lavorare alla realizzazione o alla modifica di un tema per WordPress, prima o poi, avrete bisogno di interagire con il database MySQL per ricavare delle informazioni. Siano esse il semplice titolo di un post oppure informazioni più precise e complicate da ottenere. In ogni caso é necessario scrivere qualche riga in php perchè difficilmente trovate tutto già disponibile. Ecco perché, dopo aver parlato di come connettersi ad un database MySQL, eccovi un articolo sulle vari modalità di integrazione.
La classe ezSQL di Wordpress
Come in molte applicazioni, anche per Wordpress, esiste un ‘database abstraction layer’ ovvero una classe o libreria che si posiziona tra il codice e il database che ospita i dati. Questo strato/layer fornisce un’interfaccia di comunicazione fra il cms e il database. La classe utilizzata da Wordpress é ezSQL di cui abbiamo già parlato in modo generale.
L’handler, ovvero l’oggetto con proprietà e metodi, di cui si serve la classe suddetta per tutte le interazioni tra Wordpress e Database, é la famosa $wpdb.
Essendo la $wpdb una variabile globale, all’interno di tutte le funzioni che scriverete e in cui é previsto un collegamento con il database, dichiaratela come globale in modo da poter avere libero accesso ai suoi metodi e proprietà :
functions mia_funzione()
{
global $wpdb;
………………….
}
Le proprietà dell’oggetto wpdb
Se tramite codice php abbiamo ampie possibilità di integrazione tra Wordpress e Database, lo dobbiamo alla vasta gamma di proprietà dell’oggetto wpdb. Le proprietà riescono a coprire benissimo e ampiamente tutti i metadati, le tabelle e i relativi collegamenti del DB MySQL e, proprio sfruttando queste proprietà, vi mostrerò alcune integrazioni basilari.
Premetto che, per accedere alle varie proprietà a disposizione, si usa la seguente sintassi : $wpdb –> {property}
Inoltre, tra le tante, la proprietà più importante che prederemo in considerazione é la : $wpdb –> {posts} che impatta la tabella degli articoli con tutti gli attributi (autore, titolo, data, content, status,category ecc) del caso. Non che le altre tabelle che fanno parte dell’installazione di default siano meno importanti, ma, indubbiamente, la tabella posts é quella che immagazzina la maggior parte dei dati di cui si vogliono ottenere informazioni.
Aggiungere Dati al database MySQL con Wordpress
Per aggiungere dati nelle tabelle MySQL del database con Wordpress potete sfruttare il metodo insert() di wpdb i cui riferimenti trovate a questo link. Vediamo, in generale, come fare, premettendo che per evitare il famoso problema dovuto alla tecnica d’attacco SQL Injection, occorre ‘bonificare’ o controllare apriori i dati da inserire. Per avere una panoramica più approfondita, dedicherò alla SQL Injection un articolo specifico.
Vediamo, ora, un esempio che consente di inserire nella tabella posts (quella che gestisce gli articoli, come detto) alcuni dati musicali con titolo del brano, descrizione e tipo sfruttando la sintassi del metodo insert() : <?php $wpdb->insert( $table, $data, $format ); ?>
functions add_music_post ( $music_titolo, $music_descrizione) {
global $wpdb;
$wpdb –> insert( $wpdb –>posts, array(‘posts_title => $music_titolo, ‘post_content’ => $music_descrizione, ‘post_type => ‘mp3’), array(‘%s’, ‘%s’, ‘%s’) );
}
Modificare Dati nel database MySQL con Wordpress
Accanto al metodo insert() visto sopra, un altro metodo consente di apportare modifiche ai dati presenti nel Database : update(). I riferimenti del metodo li trovate a questo link, ma vi anticipo che la sintassi é la seguente :
$wpdb->update( ‘table’, array( ‘column1′ => ‘value1′, ‘column2′ => ‘value2′ ), array( ‘ID’ => 1 ), array( ‘%s’, ‘%d’ ), array( ‘%d’ ) )
dove i parametri sono la tabella da aggiornare, le colonne impattate e i valori precisi. Vediamo un esempio :
functions edit_music_post ( $post_id, $titolo_new, $descrizione_new) {
global $wpdb;
$wpdb –> update( $wpdb –>posts, array(‘posts_title => $titolo_new, ‘post_content’ => $descrizione_new) , array(‘ID’ => post_id), array(‘%s’, ‘%s’, ) array (‘%d’) );
}
Ottenere Dati dal Database MySQL con Wordpress
Quest’ultimo é, di sicuro, il metodo più interessante ed utile perché consente di ottenere dati dal database cui Wordpress è collegato. Logicamente, le possibilità son molteplici anche in considerazione della enorme mole di dati cui si può attingere.
Vediamo tre tipologie di azioni :
Ottenere singolo valore da una tabella
Il metodo impattato in questa situazione é il get_var() e qui trovate i riferimenti. Il suo utilizzo é semplice poiché, per ottenere un singolo valore di una particolare riga di tabella, basta passare direttamente l’SQL statement al metodo :
$post_id = $wpdb->get_var(“select id from ‘ . $wpdb->posts. ‘ where post_autore=1 limit 1”);
La select vi restituirà banalmente solo l’id dell’ultimo post scritto dall’autore con id = 1.
Ottenere una colonna di dati
Il metodo é il get_col() e si usa, tanto per riprendere l’esempio precedente, nel caso in cui vogliate ottenere tutti i posts pubblicati dall’autore con id pari a 1 e non solo il più recente tenendo presente che il set di dati restituiti é, a tutti gli effetti, un oggetto :
$object = $wpdb->get_var(“select id from ‘ . $wpdb->posts. ‘ where post_autore=1”);
Ottenere un full data set
Nel caso in cui le vostre richieste non siano un semplice valore o una solo colonna, ma un vero dataset, abbiamo a disposizione il metodo get_results(). Qui trovate i riferimenti anche se la sintassi non é difficile.
Vediamo un esempio che vi fornisca tutti gli utenti registrati sul vostro blog dopo Luglio 2010 :
$users = $wpdb->get_results( select * from ‘ . $wpdb->users . ‘ where user_registred > ‘2010-07-01’ “);
Quelli che ho presentato sono solo alcuni tra i vari metodi utilizzabili per un’integrazione tra il codice Wordpress e MySQL. Se volete avere tutte le info necessarie, la classe wpdb e i relativi metodi sono elencati nella pagina ufficiale del codex Wordpress.