こんにちは、Ryohei(@ityryohei)です!

WP_Queryでquery_postsの同じようにページャーまたはページネーションを実装しようとすると、うまく表示されないケースがあります。query_postsと同様のコードでは必要な値が取得できないようなので、ページャーが表示された際のコードを記載します。

公式の関数リファレンスにも情報がありますので、詳しく知りたい方は以下のリンクからどうぞ!

関数リファレンス/paginate_links

WP_Queryでページャーを実装する

以下のコードを使用するとページャは表示されます。ページャーの出力形式はlistにしています。引数($args)のpost_type、post_per_pageやソート方法はご自身の環境のものに変更してお使いください!

<?php
  $paged = get_query_var('paged') ? get_query_var('paged') : 1;
  $args = array(
    'post_type' => array('post'),
    'post_status' => array('publish'),
    'order'=>'desc',
    'orderby'=>'post_date',
    'paged' => $paged,
    'posts_per_page' => 10
  );

  $query = new WP_Query($args);

  if ( $query->have_posts() ) :
  while ( $query->have_posts() ) : $query->the_post();

  //ここにループ内の処理

  endwhile;
  endif;
  wp_reset_postdata();

  $big = 999999999;

  echo paginate_links(array(
    'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
    'show_all' => true,
    'type' => 'list',
    'format' => '?paged=%#%',
    'current' => max(1, get_query_var('paged')),
    'total' => $query->max_num_pages,
    'prev_text' => '前へ',
    'next_text' => '次へ',
  ));
?>

以上、WP_Queryでページャー(ページ送り)を実装する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。