Categorie
Sviluppo

Come Interrogare il Database di WordPress (WP_Query, pre_get_posts, get_posts)

Cosa succede quando un visitatore richiede una pagina del vostro sito?

Si attiva una complessa procedura che vede coinvolto il client (il browser dell’utente), il server, il CMS e infine di nuovo il client, che riporterà all’utente la risorsa richiesta oppure, se qualcosa non è andato come avrebbe dovuto, un messaggio di errore del server.

A seguito dell’invio di una richiesta da parte del client, WordPress carica svariati file del core, tra cui wp-config.php, wp-settings.php, wp-includes/functions.php, ecc. (per una descrizione dettagliata, si veda Query Overview).
Ad un certo punto, cioè quando è stato caricato l’oggetto $wp, in WordPress si attiva una sequenza di operazioni:

  1. WordPress analizza l’URL della richiesta e lo scompone in una serie di parametri. Questi parametri costituiscono la query specification.
  2. Vengono definite le variabili is_ utilizzate dai conditional tag, ossia quelle funzioni di WordPress che verificano la sussistenza di determinate condizioni (ad es. la funzione is_home() verifica se la pagina richiesta dall’utente sia la home page del sito). Queste funzioni dipendono dalle variabili presenti nella query specification.
  3. La query specification viene convertita in una query MySQL, che viene eseguita sul database. All’interno di un Loop, la risposta viene memorizzata in un oggetto $wp_query, mentre se la richiesta viene dalla funzione get_posts(), la risposta sarà memorizzata in un array di oggetti $post.
  4. WordPress gestisce, quindi, gli errori 404, invia gli header HTTP, inizializza alcune variabili del Loop e seleziona il template da utilizzare per visualizzare la risorsa richiesta in base alle variabili della query specification
  5. WordPress carica il Template secondo l’ordine della gerarchia dei template.
  6. WordPress esegue il Loop.