WordPress: creare Loop annidati

WordPress: creare Loop annidati

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;
Torna su