プラグインなしでページャーを設置
WordPress
CSSPHP
「ページャーつけよう!」と一口に言っても、一覧用と単頁用がありますよね。
これ、検索すると入り乱れて出てくるから、初心者は混乱するんですよね。私も最近まで混乱してました。
前者が「ページナビ」で、後者が「ページャー」なのかな?
今回は一覧用。
indexとかarchiveにつける数字のほうです。
ページナビゲーションは、プラグイン『WP-PageNavi』を使えば簡単。
でもせっかくオリジナルテーマでやってるなら、なるべくプラグインは使わずに済ませたい。
というわけで、いろいろ試した結果、こちらがスルッと実装できました。
【参考】WordPress:ページ送り(ページネーション)をプラグイン無しで設置【スマホも1行表示】
まず function.php にはこのコード
//ページナビ function pagination($pages = '', $range = 1) { $showitems = ($range * 2)+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) { echo "<div class="pagination"><div class="pagination-box"><span class="page-of">Page ".$paged." of ".$pages."</span>"; if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>«</a>"; if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹</a>"; for ($i=1; $i <= $pages; $i++) { if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) { echo ($paged == $i)? "<span class="current">".$i."</span>":"<a href='".get_pagenum_link($i)."' class="inactive">".$i."</a>"; } } if ($paged < $pages && $showitems < $pages) echo "<a href="".get_pagenum_link($paged + 1)."">›</a>"; if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>»</a>"; echo "</div></div>n"; } }
次に index.php(表示したい場所)にこのコード
<?php if (function_exists("pagination")) { pagination($additional_loop->max_num_pages); } ?>
最後に CSS で調整。まるいページャー可愛いです。
/* ページナビ */ .pagination { clear: both; padding: 20px 0; position: relative; font-size: 14px; line-height: 1em; text-align: center; } .pagination-box { display: inline-block; } .pagination span, .pagination a { display: block; float: left; margin: 2px 2px 2px 0; padding: 10px 14px 10px 14px; text-decoration: none; width: auto; color: #fff; /* 通常の文字色 */ background: #47BEA0; /* 通常の背景色 */ border-radius: 50%; /* 角を丸くして円形に */ } .pagination span.page-of { background: none; color: #47BEA0; } .pagination a:hover{ color: #47BEA0; /* マウスホバー時の文字色 */ background: #F9D635; /* マウスホバー時の背景色 */ } .pagination .current{ padding: 10px 14px 10px 14px; color: #47BEA0; /* 現在のページの文字色 */ background: #F9D635; /* 現在のページの背景色 */ } @media only screen and (max-width: 413px) { .pagination { font-size: 12px; line-height: 12px; } .pagination span, .pagination a { padding: 7px 10px 7px 10px; } .pagination .current{ padding: 7px 10px 7px 10px; } }
コピペOKといいながら、はりつけてみるとエラーが出るものも多いので、こういうのはPHPから置いてみるのがいいですね。