ページネーションを設置する方法functions.php
2021年1月27日
いくつか歩法を試してみたが、以下の歩法が最も安定しているのではないか。
まずfunctions.phphに以下を追加。
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+1 || $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"; } }
設置場所出力には以下を
<?php if( function_exists('pagenation') ){ // 関数が定義されていたらtrueになる pagenation(); }?>
何を出力させるのかは後半を見ればわかる。とても親切!
参考サイトはこちら
「WordPressでページネーションをつくる方法と仕組みの解説」