Anche se si tratta di un'eventualità che non capita troppo spesso, tuttavia a volte si può avere l'esigenza di creare Loop di WordPress annidati. Nei Loop annidati c'è sempre un Loop iniziale che va memorizzato e quindi ripristinato quando il Loop annidato termina (ossia il suo ciclo while
). In questo articolo vedremo un esempio di Loop annidati.
Il segreto è memorizzare l'oggetto $wp_query
prima dell'annidamento e quindi utilizzare la copia cache alla fine del Loop annidato per ripristinare il corretto funzionamento del Loop principale (il più esterno):
if (have_posts()) :
while (have_posts()) : the_post(); // Primo Loop
$temp_query = $wp_query; // Memorizziamo l'oggetto $wp_query
$args = array(
'paged' => $paged, // paginazione
'post_type'=>'post',
'posts_per_page' => 3,
'order' => 'DESC'
);
$wp_query = new WP_Query($args);
while ($wp_query->have_posts()) : $wp_query->the_post();
// -- Il nuovo Loop -- //
endwhile;
if (isset($wp_query)) {
$wp_query = $temp_query;
} // Ripristina il primo Loop
endwhile;
endif;