La paginazione non funziona nel template di pagina personalizzato
Possibile duplicato:
Paginazione non funzionante con loop personalizzato
Apparentemente questo è un problema molto comune. Ci sono già molte persone che offrono soluzioni per questo. Ma dopo ore di ricerca non riesco ancora a trovare la soluzione. Spero che qualcuno possa darmi un suggerimento qui.
Attualmente ho creato una pagina per visualizzare tutti i post dei miei tipi di post personalizzati. Ecco il codice del mio template di pagina:
<?php
/*
Template Name: Pagina per tipi di post personalizzati
*/
get_header(); ?>
<div id="primary">
<div id="content" role="main">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type'=>array('car','bicycle'),
'posts_per_page'=> 20,
'page'=>$paged,
);
$the_query = new WP_Query( $args);
$num = $the_query->found_posts;
if($the_query){
if ($the_query->have_posts()) : echo $num;
while ($the_query->have_posts()) : $the_query->the_post();
echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
endwhile;
next_posts_link( 'Successivo', $the_query->max_num_pages );
previous_posts_link('Precedente', $the_query->max_num_pages );
else : $return_string = 'nessun risultato';
endif; wp_reset_query(); wp_reset_postdata();
}
?>
</div><!-- #content -->
</div><!-- #primary -->
Il problema qui è che quando clicco su Successivo
(o Precedente
), il risultato della query rimane lo stesso. Ho notato che l'URL mostra il numero di pagina (page/2/
, o page/3/
..etc). E found_posts() rimane lo stesso su ogni pagina
, tutto sembra a posto, solo che il contenuto non mostra il risultato corretto della query.
Ho anche provato ad aggiungere 'max_num_pages'=>2
agli argomenti di wp_query, ma non ha aiutato.
Qualcuno ha idee?

Prova il seguente codice e verifica come funziona...
<?php
global $paged;
global $wp_query;
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query('posts_per_page=10&post_type=your_post_type'.'&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
<!-- fai qui l'output del tuo loop, titolo, contenuto ecc -->
<?php endwhile; ?>
<?php previous_posts_link('« Più recenti') ?>
<?php next_posts_link('Più vecchi »') ?>
<?php
$wp_query = null;
$wp_query = $temp;
?>

@tc.k Piccola modifica, aggiungendo due global. Prova di nuovo e vedi come va questa volta.

nessuna fortuna. Il problema è che la query di ricerca rimane lo stesso risultato su ogni pagina impaginata.

Ok, finalmente ho trovato il problema. Era un errore stupido, si scopre che devo usare paged
e non page
nell'argomento.

Dal codex http://codex.wordpress.org/Using_Permalinks
A volte la navigazione verso le pagine successive (seconda e oltre) degli articoli non funziona come previsto. La tua pagina potrebbe generare un link a una pagina con uno di questi URI:
http://www.example.com/page/2/ http://www.example.name/category/categoryname/page/2/ http://www.example/year/month/day/page/2/ http://www.example/year/month/page/2/
Il risultato del click su uno di questi link è che la pagina si carica con tutti gli elementi circostanti (header, footer, sidebar), ma invece di una pagina di articoli, viene visualizzato un messaggio di errore: "Spiacenti, nessun articolo corrisponde ai criteri."
Questo è dovuto a un problema nel file .htaccess generato da WordPress. Per risolverlo, elimina il contenuto del tuo file .htaccess e ricrealo.
