WordPress + Database = WPDB

Mi risulta facile immaginare come sia possibile l’elevato numero di hack per WordPress che usano il database ma non le funzionalità proprie del CMS. Tuttavia, solo perché qualcosa apparentemente funziona non significa che sia giusto o che funzioni anche su altre installazioni.

Con un paio di martellate si può adattare tutto anche allo sviluppo di software o di componenti per WordPress. Almeno questa è l’impressione che ho quando vedo alcune strutture che in certi forum compaiono con la descrizione “non funziona”. Gli errori si potrebbero però evitare sin dall’inizio – soprattutto lavorando con il database – se si usassero funzionalità testate.

In WordPress esiste una classe che mette a disposizione tutto ciò che è necessario per usare un database. La classe WPDB non si dovrebbe però utilizzare direttamente perché esiste già un’istanza a cui si può ricorrere tramite la variabile globale $wpdb. E’ importante sapere che con le funzionalità di questo oggetto non si possono soltanto inoltrare richieste alle tabelle di WordPress ma sono anche disponibili tutti i contenuti del database della configurazione.

Oltre al metodo generico get_results, che è da preferire alla funzione mysql_query di PHP, ci sono anche metodi per richieste diverse e altri per la manipolazione, la modifica, l’inserimento e la cancellazione dei dati. A questo proposito vorrei anche evidenziare i meccanismi di WordPress che offrono più sicurezza contro SQL-Injections.

Per ragioni di sicurezza si consiglia spesso di cambiare il prefisso delle tabelle di WordPress. Sono completamente d’accordo tuttavia – per fare un esempio – una richiesta diretta alla tabella wp_options non funzionerebbe più. WPDB però referenzia già le tabelle base dell’installazione, così è possibile scrivere statement SQL in modo più generico. Alla fine esiste anche la proprietà $wpdb->prefix che conosce anche il prefisso usato.

3 pensieri riguardo “WordPress + Database = WPDB”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *