web-dev-qa-db-fra.com

La pagination de type de message personnalisé ne fonctionne pas sur la page d'archivage

J'ai passé les trois dernières heures à essayer de faire apparaître la pagination sur ma page d'archive de type publication personnalisée.

Je comprends en quelque sorte que la pagination ne fonctionne qu'avec une boucle par défaut et une fois que vous modifiez la boucle, cela se casse.

Quoi qu'il en soit, j'espérais que vous pourriez me diriger dans la bonne direction.

<div class="row text-center small-up-1 medium-up-2 large-up-3 small_section">

  <?php $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; ?>

  <!-- Arguments for Loop -->
  <?php $args = array(
    'post_type' => 'portfolio',
    'posts_per_page' => 6,
    'paged' => $paged,    
  ); ?>

  <!-- Setting Up the Query -->
  <?php $work = new WP_Query( $args ); ?>

  <?php if ( $work->have_posts() ) : while ( $work->have_posts() ) : $work->the_post(); ?>
  <div class="columns"> 
    <div class="box relative">
      <a class="overlay" href="<?php the_permalink(); ?>">
        <div class="vertical_align">
          <h5><?php the_title();?></h5>
          <p>asdas, asd, asddasds</p>
        </div>
      </a>
     <?php the_post_thumbnail(); ?>
    </div>
  </div>
  <?php endwhile; ?>

  <!-- Pagination Goes Here -->
  <div class="row">
    <div class="small-12 columns">
    <?php
    the_posts_pagination( array(
      'mid_size'  => 2,
      'prev_text' => 'Previous',
      'next_text' => 'Next',
    ) );?>
    </div>
  </div>
  <?php wp_reset_postdata();
  else : ?>
  <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
  <?php endif; ?>
</div>
2
Peekay

Modifier la requête principale sur la page d'archive de type publication

Au lieu de modifier directement la requête principale, utilisez simplement la boucle normale (vous pouvez créer un modèle de type de publication , dans votre cas, archive-portofolio.php), et exécutez votre requête de modification sous filtre pre_get_posts .

Votre boucle normale sur archive-portfolio.php

<div class="row text-center small-up-1 medium-up-2 large-up-3 small_section">
  <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <div class="columns"> 
    <div class="box relative">
      <a class="overlay" href="<?php the_permalink(); ?>">
        <div class="vertical_align">
          <h5><?php the_title();?></h5>
         <!-- YOUR ANOTHER STUFF -->
        </div>
      </a>
     <?php the_post_thumbnail(); ?>
    </div>
  </div>
  <?php endwhile; ?>

  <!-- Pagination Goes Here -->
  <div class="row">
    <div class="small-12 columns">
    <?php
        the_posts_pagination( array(
            'mid_size'  => 2,
            'prev_text' => 'Previous',
            'next_text' => 'Next',
        ) );
    ?>
    </div>
  </div>
  <?php else : ?>
  <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
  <?php endif; ?>
</div>

Modification du type de poste de requête dans functions.php

add_action( 'pre_get_posts' ,'wpse222471_query_post_type_portofolio', 1, 1 );
function wpse222471_query_post_type_portofolio( $query )
{
    if ( ! is_admin() && is_post_type_archive( 'portofolio' ) && $query->is_main_query() )
    {
        $query->set( 'posts_per_page', 6 ); //set query arg ( key, value )
    }
}
2
Jevuska