WordPress: la classe WP_Query e la paginazione dei post

Short link

Quando si parla della classe WP_Query di WordPress e dei Loop personalizzati, il primo problema che viene in mente è quello relativo alla paginazione dei post. In questo articolo vedremo un modo semplice ma efficace per affrontare questo problema.

Per prima cosa, occorre nominare l'istanza della classe come $wp_query, ossia con il nome che useremo per accedere alla proprietà max_num_pages. Quindi occorre passare alla classe il parametro paged:


<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$wp_query = new WP_Query();
$loop_args = array('cat' => 13, 'posts_per_page' => 3, 'paged' => $paged);
$wp_query->query($loop_args);
?>

Quindi possiamo creare il Loop con la paginazione:

[php htmlscript="true"] <?php while($wp_query->have_posts()) { $wp_query->the_post(); ?> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php the_title();?>" rel="bookmark"><?php the_title(); ?></a></h2> <div class="entry-content"> <?php the_content( __( 'Continua la lettura <span class="meta-nav">&rarr;</span>', 'tema') ); ?> </div> </div> <?php } if ( $wp_query->max_num_pages > 1 ) { ?> <div id="nav-below" class="navigation"> <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Articoli precedenti', 'tema' ) ); ?></div> <div class="nav-next"><?php previous_posts_link( __( 'Articoli successivi <span class="meta-nav">&rarr;</span>', 'tema' ) ); ?></div> </div> <?php } ?>

Si tratta di una soluzione sicuramente migliorabile ma efficace.