Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Padroneggiare WP_Query: Usare il Loop

by
Difficulty:IntermediateLength:ShortLanguages:
This post is part of a series called Mastering WP_Query.
Mastering WP_Query: An Introduction
Mastering WP_Query: Related Functions

Italian (Italiano) translation by Roberta C (you can also view the original English article)

Come ho sottolineato nell'introduzione di questa serie, la classe WP_Query ha quattro elementi principali:

  • gli argomenti della query che usano i parametri che verranno trattati nel dettaglio in questa serie
  • la query stessa
  • il loop, che visulizzarà il contenuto, titoli o qualunque altra cosa si desideri
  • alla fine: chiusura dei tag if e while e ripristino dei dati del post

In questo tutorial vi mostrerò come utilizzare il loop con WP_Query, compresi i due modi principali per strutturare il vostro loop e come utilizzare multipli loop.

Dove si inserisce il loop

Senza un loop, niente sarà visualizzato sulla tua pagina. Dopo che WordPress ha eseguito la query, utilizzando gli argomenti definiti,  ha bisogno di sentirsi dire che cosa visualizzare dei dati recuperati. Qua è dove il loop serve.

Pertanto, il loop viene dopo la query e utilizza tre Tag:

  • if ($query->have_posts()) controlla se esiste un qualsiasi post.
  • while( $query->have_posts() ) ripete il loop per ogni post finché non ci sono post da recuperare.
  • $query->the_post() accede a quello specifico post.

Quindi qui è dove il loop si inserisce nella classe WP_Query:

Dopo aver eseguito il loop, tutto ciò che resta da fare è resettare i dati usando wp_reset_postdata().

Struttura del loop

Il loop sarà strutturato a seconda di quali dati vogliamo visualizzare nel nostro post. Qui un esempio di loop che restituisce il titolo del post, l'immagine in evidenza e un estratto. Potete usare un loop come questo in una pagina di archivio.

Questo loop visualizza esattamente quello che è descritto sopra: l'immagine in evidenza, il titolo e la sintesi.

Andiamo più avanti con il loop: controllare il contenuto

A volte si potrebbe voler aggiungere un'intestazione prima dell'elenco dei post, o si potrebbe desiderare di racchiuderli tutti in un elemento contenitore. Se questo viene aggiunto prima del loop, verrebbe visualizzato indipendentemente dal fatto che la query restituisca o meno i dati, quindi potremmo avere un'intestazione con niente sotto, o alcuni tag inutili.

La cosa da fare è mettere gli elementi che devono racchiudere, o l'intestazione dentro il tag if:

Come si può vedere ho controllato se ci sono eventuali messaggi recuperati dalla mia query, e se ci sono apro un elemento contenitore e aggiungo un'intestazione.

Questo è utile anche se si desidera restituire i risultati della query come un elenco. Diciamo che voglio creare un elenco di tutti i messaggi di una determinata categoria. L'elemento ul non si riferisce ad uno specifico post quindi non è all'interno del mio loop, ma voglio che venga visualizzato solo se ci sono dei post. Quindi uso questo:

Questo controlla se la query ha recuperato alcun post, in caso positivo, si apre l'elemento ul e quindi viene eseguito il loop.

Eseguire loop supplementari

È importante sapere che è possibile utilizzare WP_Query per eseguire più di un loop, ma per farlo è necessario reimpostare i dati del post e avviare una seconda istanza di WP_Query. Questo è perché in ciascuno dei nostri loop l'output dei dati sarà basato su diversi argomenti.

Questo esempio visualizza la sintesi e l'immagine in evidenza per il primo post e poi semplicemente il titolo di ogni post successivo:

Ho usato due argomenti chiave qui:

  • 'posts_per_page' => '1', usato con la prima query, visualizza solo il post più recente.
  • ' offset '= 1', utilizzato con la seconda query, salta il primo post, assicurandosi che non sia ripetuto nell'elenco sottostante.
  • Come si può vedere dal codice precedente, il loop è leggermente diverso per ogni query. Il primo visualizza la l'immagine in evidenza, il titolo e il riassunto, mentre il secondo controlla se la query ha post e in caso positivo apre un elemento ul e racchiude ogni titolo del post in un elemento li e un link alla sua pagina.

Noterete anche che ho usato wp_reset_postdata() dopo entrambi i loop. Se non lo avessi fatto, è possibile che anche il secondo loop avrebbe visualizzato i dati del primo.

Riepilogo

Senza un loop, WP_Query non serve a molto. Il loop è il codice che si utilizza per visualizzare i dati che WordPress ha recuperato dal database in base agli argomenti della query.

Come ho dimostrato, ci sono alcune variazioni sul loop. Un semplice loop visualizza tutti i post nell'ordine specificato negli argomenti della query (o per data in ordine decrescente per impostazione predefinita). Se si separano if ($query->have_posts()) e while ($query->have_posts()), è possibile inserire codice aggiuntivo all'esterno del loop, ma solo nel caso la query abbia restituito i dati. E infine, specificando gli argomenti alternativi e utilizzando wp_reset_postdata() dopo ogni loop, è possibile utilizzare WP_Query più di una volta per creare loop multipli sulla pagina.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.