現在、下記サイトを参考にページネーションを実装していますが苦戦しております。
[WordPressでページネーションをつくる方法と仕組みの解説]https://since-inc.jp/blog/8506
【前提・実現したいこと】※2022年6月2日にコードの修正を行い以下の状態になっております。
下記のソースコードでは、全5ページの場合
1ページ目にいると「前へ 1 2 3 4 次へ」
2ページ目にいると「前へ 2 3 4 5 次へ」
3ページ目にいると「前へ 3 4 5 次へ」
4ページ目にいると「前へ 4 5 次へ」
5ページ目にいると「前へ 5 次へ」
となります。
1ページ目のときに「前へ 1 2 3 4 次へ」
最終ページのときに「前へ 7 8 9 10 次へ」
という風に表示されるページ数を常に4個に固定するにはどのようにすれば良いでしょうか?
また、1ページ目の時には「前へ」を 、最終ページの時には「次へ」をクリックできないようにしたいです。
よろしくお願い致します。
【ソースコード】
function pagenation($pages = '', $range = 2){ $showitems = ($range * 1) + 1; global $paged; if(empty($paged)) $paged = 1; if($pages == ''){ global $wp_query; $pages = $wp_query->max_num_pages; if(!$pages){ $pages = 1; } } if(1 != $pages){ // 画像を使う時用に、テーマのパスを取得 $img_pass = get_template_directory_uri(); echo "<div class=\"m-pagenation\">"; // 「1/2」表示 現在のページ数 / 総ページ数 // echo "<div class=\"m-pagenation__result\">". $paged."/". $pages."</div>"; // 「前へ」を表示 if($paged >= 1) echo "<div class=\"m-pagenation__prev\"><a href='".get_pagenum_link($paged - 1)."'>前へ</a></div>"; // ページ番号を出力 echo "<ol class=\"m-pagenation__body\">\n"; for ($i=1; $i <= $pages; $i++){ if (1 != $pages &&( !($i >= $paged+$range+2 || $i <= $paged-$range+1) || $pages <= $showitems )){ echo ($paged == $i)? "<li class=\"-current\">".$i."</li>": // 現在のページの数字はリンク無し "<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>"; } } // [...] 表示 // if(($paged + 4 ) < $pages){ // echo "<li class=\"notNumbering\">...</li>"; // echo "<li><a href='".get_pagenum_link($pages)."'>".$pages."</a></li>"; // } echo "</ol>\n"; // 「次へ」を表示 if($paged <= $pages) echo "<div class=\"m-pagenation__next\"><a href='".get_pagenum_link($paged + 1)."'>次へ</a></div>"; echo "</div>\n"; } }
回答1件
あなたの回答
tips
プレビュー