Effettuare query in WordPress è una delle necessità principali degli sviluppatori di plugin e temi.
WordPress mette a disposizione funzioni built-in per accedere alle informazioni contenute nel database.
Nel seguito dell’articolo approfondiremo le diverse modalità rese disponibili da WordPress per accedere al database.
Indice
Query in WordPress senza SQL
WordPress è un Content Management System che supporta database MySQL / MariaDB, come specificato nella pagina ufficiale dei requisiti di WordPress.
Per questo motivo, è possibile effettuare delle queries SQL per accedere, modificare ed eliminare le informazioni presenti sulla base dati.
Tuttavia, sono disponibili in WordPress delle funzioni che permettono di eseguire queste operazioni senza dover operare direttamente sul database utilizzando MySQL.
Le funzioni / classi principali per eseguire operazioni sul database senza utilizzare SQL sono:
- get_post()
- get_posts()
- WP_Query
- get_user_by()
- wp_update_post()
- wp_delete_post()
- update_post_meta()
- delete_post_meta()
Queste funzioni / classi permettono di leggere, modificare ed eliminare le informazioni contenute nelle tabelle standard previste dal database di WordPress.
La struttura del database di WordPress
Il database di WordPress è costituito da 12 tabelle distinte, che permettono il funzionamento del CMS.
Nel seguito approfondiremo lo scopo di ciascuna tabella.
wp_posts e wp_postmeta: le tabelle principali di WordPress
Tutti i contenuti creati in WordPress sono modellati come post
, venendo differenziati tramite l’attributo post_type
. Tale attributo è memorizzato in una colonna della tabella wp_posts
.
I post types
presenti di default in WordPress sono:
post
– utilizzato per gli articolipage
– usato per le pagineattachment
– utilizzato per gli allegatirevision
– usato per il versionamento dei contenutinav_menu_item
– utilizzato per rappresentare le voci di menuwp_template
ewp_template_part
– utilizzati per rappresentare elementi grafici
Ogni post
salvato sul database ha la possibilità di scrivere sul database attributi arbitrari, grazie alla tabella wp_postmeta
.
Questa tabella, infatti, è strutturata per permettere di impostare, per qualunque post, un numero arbitrario di coppie chiave, valore
.
wp_postmeta
viene utilizzata molto dai plugins e temi che definiscono i propri post_types
personalizzati e hanno necessità di salvare informazioni relative ai propri post personalizzati.
Ad esempio, WooCommerce, il plugin di e-commerce sviluppato da Automattic, utilizza wp_postmeta
per contenere le informazioni aggiuntive per i prodotti dello store e per gli ordini.
wp_users e wp_usermeta: le tabelle degli utenti di WordPress
wp_users
è la tabella utilizzata da WordPress per censire gli utenti registrati in WordPress, qualunque ruolo essi abbiano.
wp_usermeta
, analogamente a wp_postmeta
, è una tabella chiave-valore utilizzata per salvare informazioni aggiuntive degli utenti contenuti in wp_users
.
wpdb WordPress: come fare le queries con SQL
Ora che abbiamo le nozioni principali riguardo alla struttura del database di WordPress, approfondiamo come effettuare delle queries utilizzando MySQL.
Come sicuramente saprai, accedere al database ha delle implicazioni riguardo alla sicurezza informatica.
Assicurati di avere ben chiaro cosa siano le SQL Injections e gli attacchi XSS Persistent.
Fatta questa premessa, possiamo approfondire come effettuare delle queries con SQL.
Per questo scopo, WordPress mette a disposizione la classe wpdb.
Il modo consigliato per far uso di questa classe è dichiarando $wpdb
globale.
Ecco un esempio:
<?php global $wpdb; $results = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}posts", OBJECT );
Nel seguito analizzeremo i principali metodi disponibili in $wpdb
.
wpdb prefix: il prefisso delle tabelle nelle query WordPress
Nell’esempio avrai notato la stringa $wpdb->prefix
.
Questo attributo solitamente contiene il prefisso definito in wp-config.php
.
Tale prefisso è specifico per ogni installazione di WordPress, aiutando il prodotto ad essere resiliente rispetto ad attacchi di tipo SQL Injections.
I metodi disponibili in $wpdb
I metodi più utilizzati di $wpdb
sono i seguenti:
get_results()
prepare()
get_var()
get_row()
get_col()
insert()
query()
Di seguito puoi trovare un esempio di utilizzo di query()
e prepare()
.
In questo esempio eseguiamo un’operazione di INSERT
facendo uso di un prepared statement
.
<?php $metakey = 'una-metakey'; $metavalue = "un metavalue"; $wpdb->query( $wpdb->prepare( "INSERT INTO $wpdb->postmeta ( post_id, meta_key, meta_value ) VALUES ( %d, %s, %s )", 10, $metakey, $metavalue ) );
Puoi trovare altri esempi di utilizzo di $wpdb
per effettuare query in WordPress nella pagina di documentazione di $wpdb.
Approfondimenti sviluppo WordPress
Se sei interessato/a ad altri articoli riguardo lo sviluppo di siti con WordPress può visitare la sezione dedicata a WordPress.
Ecco alcuni articoli della sezione:
- Hosting WordPress
- Creare child theme WordPress
- htaccess WordPress: come modificarlo e ripristinarlo
- Errore 500 WordPress: tutte le possibile cause e soluzioni
- I logs di un gateway di pagamento di WooCommerce
query WordPress – Conclusioni
In questo articolo abbiamo analizzato come interagire con il database di un sito costruito utilizzando WordPress.
Inoltre, abbiamo brevemente analizzato la sua struttura e le funzionalità messe a disposizione dal CMS per le operazioni di lettura / scrittura.
Hai bisogno di una privacy policy per il tuo sito?
Scopri Iubenda