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