WordPress : La pagination ne fonctionne pas sur les types de publication personnalisés

Publié par Jean-Michel le

J’ai créé un « portfolio » de type de publication personnalisé sur mon site Web. Je suis capable de créer des catégories, des messages … etc. J’ai créé une page de catégorie qui affiche tous les messages en fonction de la catégorie et je l’ai fait en utilisant le morceau de code suivant dans archive.php

<?php $cat = get_query_var('cat');?>
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
 <?php query_posts('showposts=3&post_type=portfolio&category_name=web-design&order=ASC&paged='.$paged); ?>
 <div id="page" class="category_post grid_12">
<?php while (have_posts() ) : the_post(); ?>
<div class="grid_3 single-post">
<div class="list-post">
<a class="read-more" href="<?php echo get_permalink()?>"><?php echo                   the_post_thumbnail(array(213,185));?></a>
</div>
 <p>
 <?php $content=trim(get_field("description"));
  echo $half_content=substr($content,0,88)."..." ?>
  <a class="category-link" href="<?php echo get_permalink()?>">Read more</a>
  </p>
</div>
  <?php endwhile; ?>
  <?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>

J’utilise également le plugin wp_pagenavi pour la pagination. Maintenant, mon problème est que lorsque je clique sur la page 2, c’est-à-dire la page suivante, les messages les plus récents ne s’affichent pas. Veuillez me dire ce qui ne va pas avec le code ci-dessus.

Solution n°1 trouvée

Votre type de publication personnalisé a-t-il la propriété has_archive définie sur true ? Utilisez-vous un modèle d’archive ou tring pour interroger les publications dans un code de modèle ?

Solution n°2 trouvée

        Add custom_pagination function in your function.php file

         `function custom_pagination($numpages = '', $pagerange = '', $paged='') {
             if (empty($pagerange)) {
                 $pagerange = 2;
             }
             global $paged;
                if (empty($paged)) {
                 $paged = 1;
             }
            if ($numpages == '') {
               global $wp_query;
                $numpages = $wp_query->max_num_pages;
                if(!$numpages) {
                 $numpages = 1;
               }
           }
           $pagination_args = array(
               'base'            => get_pagenum_link(1) . '%_%',
               'total'           => $numpages,
               'current'         => $paged,
              'show_all'             => False,
              'end_size'             => 1,
              'mid_size'             => $pagerange,
              'prev_next'        => False,
              'prev_text'        => __('&laquo;' , 'swift'),
              'next_text'        => __('&raquo;' , 'swift'),
              'type'             => 'array',
              'add_args'             => false,
              'add_fragment'     => ''
             );
              $paginate_links = paginate_links($pagination_args);
               echo '<div class="Pagination-Num"><ul>';
                  foreach ( $paginate_links as $paginate_link ) {
                         echo "<li> $paginate_link </li>";
                    }
                echo '</ul></div>';
        }
         `




  And In your Custom page template add the following code...

  <?php
    /**
     * Template Name: Custom Page
     * The custom page template file
     */
 ?>

    <?php get_header(); ?>

    <h2>Posts</h2>

    <?php

      $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

      $custom_args = array(
          'post_type' => 'post',
          'posts_per_page' => 2,
          'paged' => $paged
        );

      $custom_query = new WP_Query( $custom_args ); ?>

      <?php if ( $custom_query->have_posts() ) : ?>

        <!-- the loop -->
        <?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
          <article class="loop">
            <h3><?php the_title(); ?></h3>
            <div class="content">
              <?php the_excerpt(); ?>
            </div>
          </article>
        <?php endwhile; ?>
        <!-- end of the loop -->

        <!-- pagination here -->
        <?php
          if (function_exists(custom_pagination)) {
            custom_pagination($custom_query->max_num_pages,"",$paged);
          }
        ?>

      <?php wp_reset_postdata(); ?>

      <?php else:  ?>
        <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
      <?php endif; ?>

    <?php get_footer(); ?>

Je suis sûr que ce sera du travail.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *