Paginazione con 5 articoli per pagina
Sto cercando di creare un elenco paginato di articoli e ho utilizzato il Codex per scrivere del codice, ma sembra che stia facendo qualcosa di sbagliato.
Questi sono i miei argomenti di 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
)
);
Il contenuto di $paged
viene effettivamente mostrato come 1
come previsto
Ho aggiunto next_posts_link
al mio statement if
ma i link non vengono visualizzati.
if ( $the_query->have_posts() ) {
previous_posts_link( '« Articoli più recenti' );
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<div class="news-item">';
// contenuto dell'articolo qui
echo '</div>';
}
next_posts_link( 'Articoli precedenti »', 0 );
}
MODIFICA
La pagina in cui questo viene mostrato non è una pagina principale, ma è una pagina statica che ho creato. Ho creato il template page-news.php
e poi ho creato una pagina chiamata 'News' ed è qui che risiede questo codice. Potrebbe essere questo il motivo?

Questo funziona per me su una singola pagina utilizzando un template. Assicurati solo di impostare next_posts_link( 'Articoli più vecchi »', $the_query->max_num_pages );
.
// imposta il parametro "paged" (usa 'page' se la query è su una pagina statica frontale)
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : '1';
$args = array (
'nopaging' => false,
'paged' => $paged,
'posts_per_page' => '5',
'post_type' => 'post',
);
// La Query
$query = new WP_Query( $args );
// Il Loop
if ( $query->have_posts() ) {
previous_posts_link( '« Articoli più recenti' );
while ( $query->have_posts() ) {
$query->the_post();
echo '<div class="news-item">';
// contenuto del post qui
echo '<h1 class="page-title screen-reader-text">' . the_title() . '</h1>';
echo '</div>';
}
next_posts_link( 'Articoli più vecchi »', $query->max_num_pages );
} else {
// nessun post trovato
echo '<h1 class="page-title screen-reader-text">Nessun articolo trovato</h1>';
}
// Ripristina i dati originali del Post
wp_reset_postdata();

La pagina in cui viene visualizzato questo non è una front page, ma è una pagina statica che ho creato. Ho creato il template page-news.php
e poi ho creato una pagina chiamata 'News' ed è lì che risiede questo codice. Potrebbe essere questo il motivo?

Quali modifiche hai apportato al mio codice? Non riesco a trovare la modifica.

Stavo testando sulla front page al di fuori del main loop, proverò questo su una pagina statica e ti farò sapere se c'è qualche differenza.

Quindi, sembra che scompaia quando lo inserisci all'interno di un template. Ora che ho un esempio funzionante per fare ulteriori test, un attimo.

@user1486133, ora funziona perfettamente. Basta aggiungere $the_query->max_num_pages
al tuo next_posts_link
invece di 0.
