WordPress WP_Query e Loop
1.786 visiteIn questo articolo spiegheremo come utilizzare in WordPress WP_Query e i cicli Loop su cui si basano le query.
Per fare le query in wordpress è possibile usare le funzioni native get_posts() o query_posts() ma bisogna fare attenzione in quando con la prima possiamo richiedere solo elementi di tipo post mentre con la seconda andiamo a modificare la query corrente di wordpress producendo a volte risultati inaspettati specie se non usiamo correttamente la funzione wp_reset_query().
Ma esiste un altro metodo grazie al quale è possibile creare query custom, ossia utilizzando la classe WP_Query.
Vediamo come funziona con un esempio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php //Array di configurazione per WP_Query //vogliamo tutti gli elementi con categoria id=1 $args = array('cat' => 1, 'post_type' => 'myposttype'); $myloop = new WP_Query( $args ); if ( $myloop->have_posts() ) : while( $nuovo_loop->have_posts() ) : $nuovo_loop->the_post(); ?> <!-- Qui inseriamo quello che vogliamo fare dentro il loop --> <?php endwhile; else: ?> <!-- Qui inseriamo il codice che vogliamo se non abbiamo risultati --> <?php endif; wp_reset_postdata(); ?> |
WP_Query prende in input un array oppure una stringa con insieme di coppie nome=valore& e nel nostro esempio indichiamo alla classe che vogliamo fare una query estrapolando tutti gli elementi con post_type ‘myposttype’ e appartenenti alla categoria con id 1.
La classe restituisce quindi un oggetto che abbiamo inserito nella variabile $myloop possiamo quindi procedere a creare il nostro loop e per ogni elemento effettuare la nostra elaborazione.
Ricordiamoci alla fine di usare la funziona wp_reset_postdata() per resettare l’oggetto di default relativo all’oggetto post corrente usato da wordpress.
Esistono dei servizi gratuiti online che ci possono aiutare a creare l’array di cui sopra da inserire nella WP_Query($args) come per esempio GenerateWP.