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?
user1486133
Quali modifiche hai apportato al mio codice? Non riesco a trovare la modifica.
user1486133
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.
jgraup
Quindi, sembra che scompaia quando lo inserisci all'interno di un template. Ora che ho un esempio funzionante per fare ulteriori test, un attimo.
jgraup
@user1486133, ora funziona perfettamente. Basta aggiungere $the_query->max_num_pages al tuo next_posts_link invece di 0.
jgraup