phpで動かす独自ページャ(WordPressにも組み込める)
phpでページャを付けたい場合や、wp_query処理後にカスタムフィールドで値を変更するなど、
プラグインのページャを動かせない場合に利用。
「配列の個数」「1ページの表示数」「現在のページ数(パラメータ)」を処理に渡す。
※ページャはあくまで「ページャを作成するもの」であり、表示に関してはパラメータから抜き出しを行っている。
◆ページ数と1ページに表示する配列の取得(データは$dataに入っているものとする)
<?php // 現在の表示ページ数を取得 $page_rec = 8; //1ページの表示数 // 総数を取得(ページャに使用) $pageCount = count($data); // 表示する範囲を指定 if(isset($_GET["page"])){ $paged = $_GET["page"]; }else{ $paged = 1; } if( $paged == 1){ $min = 0; }else{ $min = (($paged-1)*$page_rec); } $data = array_slice($data, $min, $page_rec); ?>
◆ページャ出力処理
function pager($c, $t ,$r) { $current_page = $c; //現在のページ $total_rec = $t; //総レコード数 $page_rec = $r; //1ページに表示するレコード $total_page = ceil($total_rec / $page_rec); //総ページ数 $show_nav = 5; //表示するナビゲーションの数 $path = '?page='; //パーマリンク //全てのページ数が表示するページ数より小さい場合、総ページを表示する数にする if ($total_page < $show_nav) { $show_nav = $total_page; } //トータルページ数が2以下か、現在のページが総ページより大きい場合表示しない if ($total_page <= 1 || $total_page < $current_page ) return; //総ページの半分 $show_navh = floor($show_nav / 2); //現在のページをナビゲーションの中心にする $loop_start = $current_page - $show_navh; $loop_end = $current_page + $show_navh; //現在のページが両端だったら端にくるようにする if ($loop_start <= 0) { $loop_start = 1; $loop_end = $show_nav; } if ($loop_end > $total_page) { $loop_start = $total_page - $show_nav +1; $loop_end = $total_page; } ?> <div class='wp-pagenavi'> <?php //最初のページ以外だったら「前へ」を表示 if ( $current_page > 1) echo '<a class="previouspostslink" href="'. $path . ($current_page-1).'"><</a>'; for ($i=$loop_start; $i<=$loop_end; $i++) { if ($i > 0 && $total_page >= $i) { if($i == $current_page){ echo '<span class="current">'.$i.'</span>'; } else{ echo '<a class="page smaller" href="'. $path . $i.'">'.$i.'</a>'; } } } //最後のページ以外だったら「次へ」を表示 if ( $current_page < $total_page) echo '<a class="nextpostslink" href="'. $path . ($current_page+1).'">></a>'; ?> </div> <?php }
◆ページャ表示
<?php pager($paged, $pageCount, $page_rec); ?>
参考サイト
-
前の記事
カスタムフィールドのチェックボックスの“ラベル”を取得する 2018.06.14
-
次の記事
WordPressログイン画面にベーシック認証をかける 2018.08.08