WordPress: perchè usare WP_Query

WordPress: perchè usare WP_Query

Ho notato una generale tendenza nei temi di WordPress ad utilizzare funzioni secondarie per la creazione di Loop alternativi piuttosto che la classe WP_Query. L'uso di queste funzioni, seppure all'apparenza più veloce ed immediato, crea in realtà più problemi di quanti non ne risolva. In questo articolo vedremo perchè.

Loop principale e loop secondari

Consideriamo questo codice:


<?php query_posts('cat=5'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
   <?php the_content(); ?>
<?php endwhile; endif; ?>

Viene creato un Loop secondario. Il problema è che la funzione query_posts() (come altre) va ad influenzare il Loop principale. In questo caso occorre aggiungere un reset della query creata:


<?php wp_reset_query(); ?>

Usando invece la classe WP_Query non si hanno effetti secondari. Questo perchè tutte le funzioni secondarie di cui abbiamo parlato non sono altro che implementazioni particolari della classe WP_Query.

Se le cose stanno così, è molto più pratico scrivere:


$loop = new WP_Query(array('cat'=> 5));
if($loop->have_posts()) {

	while($loop->have_posts()) {
	
		$loop->the_post();
		
		// codice HTML
	
	}


}

In questo modo utilizziamo direttamente quello che è il motore pulsante di ogni Loop creato in WordPress.

WP_Query ha molte più funzionalità

La classe WP_Query possiede molti più parametri e funzionalità delle funzioni secondarie. Inoltre è molto più flessibile, in quanto ci permette di combinare i parametri per avere delle query molto più precise.

Con questa classe le query possono anche essere incrociate per reperire ogni genere di contenuto inserito nel database. Se poi utilizziamo anche l'oggetto globale $wpdb per effettuare query al database e ne utilizziamo i dati restituiti in WP_Query, abbiamo praticamente risolto la quasi totalità dei problemi che possono presentarsi nello sviluppo di un sito in WordPress.

Torna su