WordPressにてBootStrap(v5.0)に対応したページネーションの実装に関して解説します。これは当サイトのページネーションの実装にも用いられているため、実装した際の挙動の確認もしやすいと思います。基本コピペで使えますが、各パラメータの調整はコメントアウトを参考に各自設定してください。
functions.php
- <?php
- //Pagenation
- function pagination($pages = '', $range = 2)
- {
- $showitems = ($range * 2)+1;//表示するページ数(5ページを表示)
- global $paged;//現在のページ値
- if (empty($paged)) {
- $paged = 1;
- }//デフォルトのページ
- if ($pages == '') {
- global $wp_query;
- $pages = $wp_query->max_num_pages;//全ページ数を取得
- if (!$pages) {//全ページ数が空の場合は、1とする
- $pages = 1;
- }
- }
- if (1 != $pages) {//全ページが1でない場合はページネーションを表示する
- echo "<ul class='pagination'>\n";
- //Prev:現在のページ値が1より大きい場合は表示
- if ($paged > 1) {
- echo "<li class=\"page-item\"><a href='".get_pagenum_link($paged - 1)."' class='page-link'>前へ</a></li>\n";
- }
- for ($i=1; $i <= $pages; $i++) {
- if (1 != $pages &&(!($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems)) {
- //三項演算子での条件分岐
- echo ($paged == $i)? "<li class=\"page-item active\"><a href='".get_pagenum_link($i)."' class='page-link'>".$i."</a></li>\n":"<li><a href='".get_pagenum_link($i)."' class='page-link'>".$i."</a></li>\n";
- }
- }
- //Next:総ページ数より現在のページ値が小さい場合は表示
- if ($paged < $pages) {
- echo "<li class=\"page-item\"><a href=\"".get_pagenum_link($paged + 1)."\" class='page-link'>次へ</a></li>\n";
- }
- echo "</ul>\n";
- }
- }
- ?>
ページネーション出力
- <?php
- //Pagenation
- if (function_exists("pagination")) {
- pagination($additional_loop->max_num_pages);
- }
- ?>