web-dev-qa-db-ja.com

アーカイブページでカスタム投稿タイプのページ区切りが機能しない

カスタム投稿タイプのアーカイブページにページ付けを表示するために、この3時間を費やしました。

ページネーションはデフォルトのループでしか機能しないことを理解しています。ループを変更すると、中断します。

とにかく、私はあなたが私を正しい方向に向けることを望んでいました。

<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

投稿タイプアーカイブページのメインクエリを変更する

メインクエリを直接修正する代わりに、通常のループ( ポストタイプテンプレートの作成 、あなたの場合はarchive-portofolio.php)を使用して、フィルタ pre_get_posts の下で修正クエリを実行するだけです。

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>

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