web-dev-qa-db-fra.com

La pagination ne fonctionne pas dans un modèle de page personnalisé

Duplicate possible:
La pagination ne fonctionne pas avec la boucle personnalisée

Apparemment, c'est un problème très populaire. Il y a déjà beaucoup de gens qui offrent des réponses à cela. Mais après des heures de recherche, je ne parviens toujours pas à trouver la solution. J'espère que quelqu'un pourra me donner un indice ici.

Actuellement, j'ai créé une page pour afficher toutes les publications de mes types de publication personnalisés. Voici les codes de mes modèles de page:

<?php

 /*
Template Name:custom post type page
*/
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( 'Next', $the_query->max_num_pages );
        previous_posts_link('Previous', $the_query->max_num_pages ); 


     else : $return_string =  'no result';  

     endif; wp_reset_query();  wp_reset_postdata();
    }

   ?>

        </div><!-- #content -->
    </div><!-- #primary -->

Le problème ici est que lorsque je clique sur Next (ou Previous), le résultat de la requête reste le même. J'ai remarqué que les URL ont montrer le numéro de page (page/2/, ou page/3/ .. etc). Et la found_posts() remains same on each page, tout semble bien se passer, seul le contenu ne montrant pas le bon objet de requête.

J'ai aussi essayé d'ajouter 'max_num_pages'=>2 à l'argument wp_query, mais cela n'aide toujours pas.

Une idée?

2
dev-jim

Essayez ce qui suit et voyez comment vous allez.

<?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(); 
?>

<!-- do your loop output here, title, content etc -->

<?php endwhile; ?>

    <?php previous_posts_link('&laquo; Newer') ?>
    <?php next_posts_link('Older &raquo;') ?>

<?php 
  $wp_query = null; 
  $wp_query = $temp; 
?>
3
userabuser

Extrait du codex http://codex.wordpress.org/Using_Permalinks

Parfois, la navigation vers la seconde (et les suivantes) pages ne fonctionne pas comme prévu. Votre page peut générer un lien vers une page avec l'un de ces 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/

En cliquant sur l’un de ces liens, la page se charge avec tout l’environnement (en-tête, pied de page, barre latérale), mais au lieu d’une page de publications, un message d’erreur s'affiche: "Désolé, aucune publication ne correspond à ce critère."

Cela est dû à un problème dans le fichier .htaccess généré par WordPress. Pour résoudre ce problème, supprimez le contenu de votre fichier .htaccess et recréez-le.

1
Mridul Aggarwal