固定ページにページネーションを追加するとき、404エラーになった場合は、rewrite rule が正しくない。
ので、下記を functions.php に追加するべし。
// 固定ページのページネーション用リライトルール
function custom_rewrite_rule() {
add_rewrite_rule('(information)/page/?([0-9]{1,})/?$', 'index.php?pagename=$matches[1]&paged=$matches[2]', 'top');
}
add_action('init', 'custom_rewrite_rule');
ちなみに、ページネーションは下記みたいな感じで。
(どこかのサイトのコードを参考に作った記憶があるけど、覚えてない。。。)
<div class="pagination">
<?php //ページリスト表示処理
global $wp_rewrite;
$paginate_base = get_pagenum_link(1);
if (strpos($paginate_base, '?') || !$wp_rewrite->using_permalinks()) {
$paginate_format = '';
$paginate_base = add_query_arg('paged', '%#%');
} else {
$paginate_format = (substr($paginate_base, -1, 1) == '/' ? '' : '/') .
user_trailingslashit('page/%#%/', 'paged');
$paginate_base .= '%_%';
}
echo paginate_links(array(
'base' => $paginate_base,
'format' => $paginate_format,
'total' => $query->max_num_pages,
'mid_size' => 2,
'current' => $paged,
'prev_text' => '前へ',
'next_text' => '次へ',
));
?>
</div>
あと、$paged は下記を追加しておかないと、きちんと値が拾えない。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
これでもページングが正しく表示されない(2ページ目だけ404になる)場合、
下記を functions.php に追加してみると良いかもしれない。
/**
* ページに表示する最大投稿数 を上書き
*/
function change_posts_per_page($query) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( $query->is_post_type_archive('case') ) { // 投稿タイプのスラッグ
$query->set( 'posts_per_page', '-1' ); // 表示させる件数
}
}
add_action( 'pre_get_posts', 'change_posts_per_page' );