アーカイブテンプレートなどで、投稿の表示件数を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>";
}