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