Come paginare questo loop personalizzato?
Ragazzi! Sono sicuro che per voi sarà un gioco da ragazzi, ma sto cercando di aggiungere la paginazione al mio loop. Ho provato alcuni codici disponibili in giro e sono riuscito a paginarlo, ma le pagine 2, 3, ecc. mostravano lo stesso contenuto della pagina 1. Qual è la soluzione migliore per quello che ho al momento?
<?php
$recentPosts = new WP_Query();
$recentPosts->query('showposts=5');
?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
<article>
</article>
<?php endwhile; ?>
Grazie in anticipo.

Probabilmente questo sta accadendo perché stai utilizzando un template di pagina personalizzato. Prova quanto segue. Ho commentato i passaggi lungo il percorso. Spero sia utile.
<?php
//ottieni la pagina corrente
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
//correzioni di impaginazione prima del loop
$temp = $query;
$query = null;
//loop personalizzato utilizzando WP_Query
$query = new WP_Query( array(
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'ASC'
) );
//imposta l'impaginazione della nostra query su $paged
$query -> query('post_type=post&posts_per_page=5'.'&paged='.$paged);
if ( $query->have_posts() ) :
while ( $query->have_posts() ) : $query->the_post();
?>
<li>
<?php if ( has_post_thumbnail()) : ?>
<?php the_post_thumbnail();?>
<?php endif; ?>
<div class="someclass" >
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
</div>
</li>
<?php endwhile;?>
<?php //passa il max_num_pages, che è il totale delle pagine ?>
<div class="pagenav">
<div class="alignleft"><?php previous_posts_link('Precedente', $query->max_num_pages) ?></div>
<div class="alignright"><?php next_posts_link('Successivo', $query->max_num_pages) ?></div>
</div>
<?php endif; ?>
<?php //reimposta quanto impostato sopra prima del loop
$query = null; $query = $temp; ?>

Per qualche motivo continua a restituire su tutte le pagine il contenuto della pagina 1. È un comportamento davvero bizzarro.

Esistono diversi modi per implementare la paginazione. Ecco un esempio:
<?php $query = new WP_Query( array( 'posts_per_page' => 5 ) ); ?>
<?php while ($query->have_posts()) : $query->the_post(); ?>
<article>
<h2><a href="<?php the_permalink(); ?>" rel="bookmark" title="Link permanente a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<article>
<?php endwhile; ?>
<div class="nav-previous alignleft"><?php next_posts_link( 'Post più vecchi' ); ?></div>
<div class="nav-next alignright"><?php previous_posts_link( 'Post più recenti' ); ?></div>
Naturalmente non funzionerà se la tua WP_Query non è costruita correttamente.

Nota che "showposts" è stato deprecato dalla versione 2.1 di WP (cioè, tempi antichi).

Hai letto la pagina del codex sulla paginazione? In particolare questa parte: https://codex.wordpress.org/Pagination#Adding_the_.22paged.22_parameter_to_a_query

Qui il mio post type è 'news_events', la paginazione verrà visualizzata dopo ogni 4 titoli di post mostrati.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$news_events = array( 'post_type' => 'news_events', 'posts_per_page' => 4, 'paged' => $paged);
$wp_query = new WP_Query( $news_events );
if ( $wp_query->have_posts() ) : ?>
<?php while ( $wp_query->have_posts() ) : $wp_query->the_post();?>
<?php the_title(); echo "<br/>"; ?>
<?php endwhile; ?>
<nav>
<?php previous_posts_link('« Più recenti',$wp_query->max_num_pages); ?>
<?php next_posts_link('Più vecchi »',$wp_query->max_num_pages); ?>
</nav>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e( 'Spiacenti, al momento non ci sono post di news ed eventi.', 'theme' ); ?></p>
<?php endif; ?>
