Paginación con 5 entradas por página
Estoy tratando de crear una lista paginada de entradas, y he usado el Codex para escribir algo de código pero parece que estoy haciendo algo mal.
Estos son mis argumentos de wp_query
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$the_query = new WP_Query(
array
(
'posts_per_page' => 5,
'post_type' => 'post',
'paged' => $paged
)
);
El contenido de $paged
se muestra como 1
lo cual sería lo esperado
He añadido next_posts_link
a mi sentencia if
pero no se muestran.
if ( $the_query->have_posts() ) {
previous_posts_link( '« Entradas más recientes' );
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<div class="news-item">';
// código de la entrada aquí
echo '</div>';
}
next_posts_link( 'Entradas anteriores »', 0 );
}
EDICIÓN
La página donde se muestra esto no es una página principal, sino una página estática que creé. Creé una plantilla page-news.php
y luego creé una página llamada 'Noticias' y ahí es donde reside este código. ¿Podría ser esa la razón?

Esto me funciona en una sola página usando una plantilla. Solo asegúrate de configurar next_posts_link( 'Entradas más antiguas »', $the_query->max_num_pages );
.
// establece el parámetro "paged" (usa 'page' si la consulta está en una página frontal estática)
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : '1';
$args = array (
'nopaging' => false,
'paged' => $paged,
'posts_per_page' => '5',
'post_type' => 'post',
);
// La Consulta
$query = new WP_Query( $args );
// El Bucle
if ( $query->have_posts() ) {
previous_posts_link( '« Entradas más recientes' );
while ( $query->have_posts() ) {
$query->the_post();
echo '<div class="news-item">';
// contenido del post aquí
echo '<h1 class="page-title screen-reader-text">' . the_title() . '</h1>';
echo '</div>';
}
next_posts_link( 'Entradas más antiguas »', $query->max_num_pages );
} else {
// no se encontraron posts
echo '<h1 class="page-title screen-reader-text">No se encontraron entradas</h1>';
}
// Restaurar los datos originales del Post
wp_reset_postdata();

La página donde esto aparece no es una página principal, sino una página estática que creé. Creé una plantilla page-news.php
y luego creé una página llamada 'Noticias' y ahí es donde reside este código. ¿Podría ser esa la razón?

Estaba probando en la página principal fuera del bucle principal, probaré esto en una página estática y te aviso si hay alguna diferencia.

Parece que sí desaparece cuando colocas esto dentro de una plantilla. Ahora que tengo un ejemplo funcional puedo probar más, un momento.

@user1486133, esto está funcionando perfectamente ahora. Solo agrega $the_query->max_num_pages
a tu next_posts_link
en lugar de 0.
