HOME > WordPress > 表示件数を個別に指定したときのページネーション

表示件数を個別に指定したときのページネーション

アーカイブテンプレートなどで、投稿の表示件数をWPの表示設定とは別の件数にしたときのページネーション。

基本は、the_posts_paginationを使ったページネーション用のテンプレートを使っているけれど表示件数を個別に設定していたarchive-hogehoge.phpでは機能しなかった(2ページ目以降が404エラーになったり、1ページ目と同じ投稿が表示されるなど)。そこで、paginate_linksを使った下記の記述を使ってうまくいった。

いつものCSSが効くように、paginate_linksで表示される内容の前後に、いつものclass名のdivを追加した。

//クエリーにページング用の記述を追加する
$paged = get_query_var('paged') ? get_query_var('paged') : 1; //ページング
$args = array( 
  'post_type' => 'magazine',  
  'posts_per_page' => 9,
    'paged' => $paged //ページング
);
$the_query = new WP_Query($args);

--------中略--------

//ぺージネーション表示用の記述
if ($the_query->max_num_pages > 1) {
	echo "<div class=\"pagenation\">".paginate_links(array(
	'base'      => get_pagenum_link(1) . '%_%',
	'format'    => 'page/%#%/',
	'current'   => max(1, $paged),
	'total'     => $the_query->max_num_pages,
    'end_size'  => '1', // ページ番号リストの両端に表示するページ数
    'mid_size'  => '2', // 現在ページの左右に表示するページ番号の数
    'prev_next' => true, // 「前へ」「次へ」のリンクを表示する場合はtrue
    'prev_text' =>  '<',  // 「前へ」の文言変更
    'next_text' =>  '>',  // 「次へ」の文言変更
    'type'      => 'list' // 戻り値の指定 (plain/list)
	))."</div>";
}
参考サイト