La paginazione non funziona nel template di pagina personalizzato

23 ott 2012, 21:27:40
Visualizzazioni: 14.4K
Voti: 2

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?

1
Commenti

Per favore, cerca prima di pubblicare domande. Questa è stata chiesta e risposta molte, molte volte.

Chip Bennett Chip Bennett
24 ott 2012 00:27:01
Tutte le risposte alla domanda 2
5

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('&laquo; Più recenti') ?>
    <?php next_posts_link('Più vecchi &raquo;') ?>

<?php 
  $wp_query = null; 
  $wp_query = $temp; 
?>
24 ott 2012 00:00:13
Commenti

Provato, ma non funziona comunque.

dev-jim dev-jim
24 ott 2012 17:41:29

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

Adam Adam
24 ott 2012 17:43:56

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

dev-jim dev-jim
24 ott 2012 17:50:45

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

dev-jim dev-jim
24 ott 2012 18:26:37

@tc.k Esatto. Non avevo notato nemmeno io la d mancante nel tuo argomento, ma sì 'paged='.$paged come regola. Sono contento che ora funzioni tutto per te. Buona continuazione.

Adam Adam
24 ott 2012 18:37:50
2

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.

23 ott 2012 21:33:55
Commenti

L'ho letto proprio 2 giorni fa ;)

Mridul Aggarwal Mridul Aggarwal
23 ott 2012 21:36:58

@Mridul Aggarwal, ho provato il tuo metodo, ma ancora non funziona.

dev-jim dev-jim
23 ott 2012 21:47:24