ページネーションを設置する方法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でページネーションをつくる方法と仕組みの解説」