固定ページでページネーションする時のまとめ [WordPress]

Author:

固定ページにページネーションを追加するとき、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;