カスタム投稿の一覧ページで、ページネーションの機能を実装
//Pagenation
function pagination($pages = '', $range = 10) // $range = 2
{
$showitems = $range; //($range * 2)+1;//表示するページ数(5ページを表示)
global $paged;//現在のページ値
if(empty($paged)) $paged = 1;//デフォルトのページ
if($pages == '')
{
global $wp_query;
$pages = $wp_query->max_num_pages;//全ページ数を取得
if(!$pages)//全ページ数が空の場合は、1とする
{
$pages = 1;
}
}
if(1 != $pages)//全ページが1でない場合はページネーションを表示する
{
echo "<div class=\"pagenation\">\n";
echo "<ul>\n";
//Prev:現在のページ値が1より大きい場合は表示
if($paged > 1) echo "<li class=\"prev\"><a href='".get_pagenum_link($paged - 1)."'>Prev</a></li>\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=\"active\"<".$i."</li>\n":"<li><a href='".get_pagenum_link($i)."'>".$i."</a></li>\n";
}
}
//Next:総ページ数より現在のページ値が小さい場合は表示
if ($paged < $pages) echo "<li class=\"next\"><a href=\"".get_pagenum_link($paged + 1)."\">Next</a></li>\n";
echo "</ul>\n";
echo "</div>\n";
}
}
CSSのサンプルは以下のような感じ
/* アーカイブページネーション PC */
.navigation.pagination {
font-family: '游ゴシック体', 'YuGothic', '游ゴシック', 'Yu Gothic','ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', Helvetica, 'メイリオ', 'Meiryo', 'Osaka', 'arial', Arial, sans-serif;
margin-bottom: 50px;
}
.navigation.pagination .page-numbers {
}
.navigation.pagination .page-numbers li {
display: inline-block;
padding: 0 10px;
border-left: 1px solid #ccc;
line-height: 100%;
vertical-align: middle;
}
.navigation.pagination .page-numbers li:first-child {
border-left: none;
}
.navigation.pagination .page-numbers li .current {
font-size: 22px;
font-weight: bold;
}
.navigation.pagination .page-numbers li {
}
/* アーカイブページネーション SP */
.navigation.pagination {
font-family: '游ゴシック体', 'YuGothic', '游ゴシック', 'Yu Gothic','ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', Helvetica, 'メイリオ', 'Meiryo', 'Osaka', 'arial', Arial, sans-serif;
margin-bottom: 50px;
}
.navigation.pagination .page-numbers {
}
.navigation.pagination .page-numbers li {
display: inline-block;
padding: 0 10px;
border-left: 1px solid #ccc;
line-height: 100%;
vertical-align: middle;
}
.navigation.pagination .page-numbers li:first-child {
border-left: none;
}
.navigation.pagination .page-numbers li .current {
font-size: 22px;
font-weight: bold;
}
.navigation.pagination .page-numbers li {
}