【WordPress】カテゴリテンプレートでページネーションを使う

電脳備忘録

本記事のソースコードの利用によって生じた損害について、当方は一切の責任を負いません。ご自身の判断と責任のもとで参照・ご利用ください。

この記事は最終更新から2年以上経過しています。

カテゴリーテンプレート(category.php)でページネーションを使う場合、function.phpに下記のコードをかく。

function my_category_rewrite_rules_array($rules) {
  // 順番の入れ替え
  $exp = '(.+?)/page/?([0-9]{1,})/?$';
  $add_rules[$exp] = $rules[$exp];
  unset($rules[$exp]);
  return $add_rules + $rules;
}
add_action('rewrite_rules_array', 'my_category_rewrite_rules_array', 10, 1);

カテゴリーテンプレート(category.php)に下記のページネーションコードをかく。

<div class="pager-nav">
  <?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' => $wp_query->max_num_pages,
      'mid_size' => 10,
      'current' => ($paged ? $paged : 1),
      'prev_text' => '<',
      'next_text' => '>',
    ));
  ?>
</div>

意図した通りに動いたのでこれでよしとします。

0%