Categorie
Web development WordPress

Query WordPress: come accedere al database

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.

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:

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.

database wordpress 4.4.2

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 articoli
  • page – usato per le pagine
  • attachment – utilizzato per gli allegati
  • revision – usato per il versionamento dei contenuti
  • nav_menu_item – utilizzato per rappresentare le voci di menu
  • wp_template e wp_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.

Scegliere un tema per blog

Stai costruendo un blog con WordPress?

Hai un sito costruito con WordPress che vuoi rinnovare graficamente?

Allora potrebbe interessarti l’articolo dedicato a “Temi WordPress per blog: cosa scegliere“.

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:

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.