Cómo paginar este bucle personalizado en WordPress
¡Hola chicos! Estoy seguro que esto será pan comido para ustedes, pero estoy intentando añadir paginación a mi bucle. He probado algunos códigos que encontré por ahí, y logré paginarlo, pero las páginas 2, 3, etc. mostraban el mismo contenido de la página 1. ¿Cuál es la mejor solución para lo que tengo actualmente?
<?php
$recentPosts = new WP_Query();
$recentPosts->query('showposts=5');
?>
<?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
<article>
</article>
<?php endwhile; ?>
Gracias de antemano.

Probablemente esto esté sucediendo porque estás usando una plantilla de página personalizada. Prueba lo siguiente. He comentado los pasos a lo largo del código. Espero que te ayude.
<?php
//obtener la página actual
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
//correcciones de paginación antes del loop
$temp = $query;
$query = null;
//loop personalizado usando WP_Query
$query = new WP_Query( array(
'post_status' => 'publish',
'orderby' => 'date',
'order' => 'ASC'
) );
//establecer la paginación de nuestra consulta a $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 //pasar el max_num_pages, que es el total de páginas ?>
<div class="pagenav">
<div class="alignleft"><?php previous_posts_link('Anterior', $query->max_num_pages) ?></div>
<div class="alignright"><?php next_posts_link('Siguiente', $query->max_num_pages) ?></div>
</div>
<?php endif; ?>
<?php //resetear lo que se estableció arriba antes del loop
$query = null; $query = $temp; ?>

Por alguna razón todavía está devolviendo en todas las páginas el contenido de la página 1. Es un comportamiento muy extraño.

Existen varias formas de implementar la paginación. Aquí te presento una:
<?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="Enlace permanente a <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
<article>
<?php endwhile; ?>
<div class="nav-previous alignleft"><?php next_posts_link( 'Entradas antiguas' ); ?></div>
<div class="nav-next alignright"><?php previous_posts_link( 'Entradas recientes' ); ?></div>
Por supuesto, no funcionará si tu WP_Query no está configurado correctamente.

Ten en cuenta que "showposts" ha quedado obsoleto desde WP 2.1 (es decir, hace mucho tiempo).

¿Leíste la página del codex sobre paginación? Específicamente esta parte: https://codex.wordpress.org/Pagination#Adding_the_.22paged.22_parameter_to_a_query

Aquí mi tipo de publicación es 'news_events', la paginación se mostrará después de cada 4 títulos de publicaciones.
$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('« Más recientes',$wp_query->max_num_pages); ?>
<?php next_posts_link('Más antiguas »',$wp_query->max_num_pages); ?>
</nav>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e( 'Lo sentimos, no hay publicaciones de noticias y eventos en este momento.', 'theme' ); ?></p>
<?php endif; ?>
