WP_Query Crea Loop Personalizzati

WP_Query, il Modo Corretto per creare Loop Personalizzati

Oggi parliamo di una cosa che riguarda qualsiasi sviluppatore WordPress. Non importa che il tuo interesse principale sia sviluppare un tema o un plugin per questa piattaforma, la cosa importante da capire è come utilizzare uno dei più potenti strumenti che questa piattaforma ci mette a disposizione e come trarne il maggior beneficio.

Posso dire tranquillamente che questa piattaforma basa la sua esistenza nella presenza di un Loop, un ciclo, che gli permette di andare a trovare e mostrare tutte le informazioni che sono contenute al suo interno. Data la sua grande importanza, negli anni sono stati sviluppati diversi metodi che permettessero la creazione di un loop personalizzato con il minimo sforzo da parte dello sviluppatore.

Funzioni come get_posts() o query_posts() sono state usate intensamente durante questo periodo ma hanno sempre portato alcune difficoltà di comprensione. Con la prima funzione, ad esempio, è possibile richiedere uno specifico array contenente soltanto i post che abbiamo richiesto mentre con la seconda andiamo a stravolgere completamente il ciclo WordPress originale ottenendo talvolta risultati inaspettati, sopratutto quando ci scordiamo di utilizzare la funzione wp_reset_query().

Per tua fortuna gli sviluppatori WordPress hanno creato un nuovo approccio alla creazione di loop personalizzati che ti permetterà di creare il loop che preferisci, questo nuovo approccio viene fornito dalla classe WP_Query.

Se non conosci il termine classe, tutto quello che devi sapere al momento è che si tratta di un termine utilizzato nella programmazione ad oggetti e che racchiude al suo interno proprietà e metodi che ti permettono di personalizzare il comportamento standard del loop WordPress. Utilizzando questa classe ti accorgerai ben presto che tutto quello che fa è creare un oggetto che racchiuderà al suo interno tutte le informazioni necessarie a mostrare gli articoli selezionati dalla tua query.

Conosci WP_Query

Dalla mia modesta opinione, non potrei darti consiglio migliore se non quello di utilizzare questa classe quando devi personalizzare, o aggiungere, loop presenti nella tua pagina perché, oltre che rendere l’esperienza più semplice e divertente, utilizzando questa classe avrai la possibilità di personalizzare il ciclo dichiarando un singolo array contenente tutte le impostazioni necessarie alla sua personalizzazione.

Loop Infinito

Credits: Franco Folini

Ma visto che sei qua per imparare qualcosa di nuovo, andiamo subito nel vivo della questione e vediamo come realizzare un primo loop personalizzato andando a mostrare soltanto gli articoli presenti nella categoria con ID 3:

 

Come puoi notare tu stesso, la creazione di questo loop è veramente molto semplice. Si parte con il dichiarare l’array $args nel quale si dichiarano le specifiche per il loop che vogliamo creare, in questo caso si chiede di selezionare tutti gli articoli che appartengono alla categoria con ID 3. Successivamente si istanzia la classe WP_Query passando i parametri contenuti nell’array e successivamente si procede con la creazione di un classico loop.

Al posto di utilizzare le funzioni have_posts() e the_post() come facciamo di consueto, in questo caso li utilizziamo ponendo di fronte l’istanza della classe appena creata assicurandoci che WordPress esegua il loop che abbiamo appena creato. Per il resto, una volta dentro al singolo articolo (indicato con il commento Cosa fare dentro il loop), potrai usare tranquillamente le funzioni che già conosci e che ti permettono di mostrare il contenuto di un articolo come the_title(), the_content() senza la necessità di specificare l’istanza $nuovo_loop.

Se sei stato attento, al termine del nostro loop, proprio subito dopo la chiusura endif, richiamo la funzione wp_reset_postdata() che mi permette di dire a WordPress di dimenticarsi del ciclo appena eseguito e di ripristinare il loop al suo valore originale. In questo modo, se nel seguito della nostra pagina abbiamo la necessità di utilizzare il ciclo originale, potremmo semplicemente eseguire il loop nella sintassi generale senza il rischio di aver compromesso il corretto funzionamento della pagina stessa.

Crea Molteplici Loop

Facendo brevemente riferimento alla lezione La nostra Frontpage presente nel corso alla realizzazione di template, al suo interno abbiamo scoperto quanto semplice sia utilizzare la classe WP_Query non per creare un unico loop, ma per crearne addirittura 3 differenti. Per fare questo tutto quello che dovrai fare è istanziare per tre volte questa classe e creare altrettanti cicli:

Ecco che, utilizzando semplicemente le conoscenze che già abbiamo, è possibile creare all’interno della stessa pagina un numero indefinito di cicli personalizzati, questo esempio sarebbe molto utile ad un tema in stile magazine! Oltre alla semplice selezione della categoria, una istanza WP_Query può essere personalizzata in moltissimi modi tutti indicati all’interno del Codex.

Non è mio interesse andare nel dettaglio e spiegarti uno per uno i parametri che potrai utilizzare, anche perché forse non ci basterebbe una intera giornata; piuttosto vorrei farti riflettere un attimo sulle operazioni che vengono svolte e perché ti consiglio di utilizzare questa classe.

Bisogna tenere sempre in considerazione il fatto che ogni volta che usi WP_Query stai facendo delle operazioni con il database; in poche parole stai dicendo a WordPress qualcosa come: “controlli se nel database esistono articoli nella categoria Scarpe? Se trovi qualcosa restituiscimi i primi X articoli.” oppure “Ci sono articoli pubblicati dopo il 10 Febbraio che sono stati scritti da Pippo?“.

Ciascuna di queste operazioni utilizza molte risorse del tuo server, risorse che rallentano il caricamento del tuo sito web, quindi pensa bene a quante query avrà bisogno il tuo progetto e a quali soluzioni potresti usare per migliorare le prestazioni del tuo server. La cosa bella è che utilizzando questa classe utilizzi la corretta sintassi che lo stesso WordPress usa per creare i propri cicli quindi se installi un plugin che ottimizza le prestazioni del tuo server, come ad esempio un qualsiasi cache plugin, sarà in grado di ottimizzare anche il tuo codice; cosa non possibile se utilizzi delle query MySQL per richiamare gli articoli di tuoi interesse.

Conclusioni

Saper utilizzare correttamente la WP_Query è una cosa che richiede molta pratica e forse molto più tempo. Non ti scoraggiare se con i primi esperimenti trovi difficoltà o ottieni dei risultati inaspettati, questa classe è davvero molto potente e posso assicurarti che da quando l’ho conosciuta non ho più smesso di usarla.

Se stai cercando un metodo veloce per fare pratica con la creazione di loop personalizzati ti suggerisco di cercare il servizio gratuito GenerateWP che, aggiornato dall’articolo che ho pubblicato, oggi offre anche una semplice interfaccia per poter utilizzare WP_Query. Resta in contatto iscrivendoti alla newsletter e condividi questo articolo con i tuoi contatti, non avrai niente da perdere tanto è gratis!

Lascia il tuo Pensiero