【WordPress】レスポンシブのページネーションを設置したい

下記ページを参考にします。

 

レスポンシブのページネーションを設置するには以下の手順がおすすめです。

  1. Font Awesome呼び出しタグを貼り付ける 
  2. functions.phpにコードを貼り付ける 
  3. ページネーション用のスタイルシートを貼り付ける 
  4. ページネーション表示箇所にコードを貼り付ける 

1. Font Awesomeのリンクを<head></head>内に貼り付けます。

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">

2. function.phpにコードを貼り付けます。

/* ===============================================
# レスポンシブ ページネーション
=============================================== */
function responsive_pagination($pages = '', $range = 4){
$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 '<ul class="pagination" role="menubar" aria-label="Pagination">';
//先頭へ
echo '<li class="first"><a href="'.get_pagenum_link(1).'"><span>First</span></a></li>';
//1つ戻る
echo '<li class="previous"><a href="'.get_pagenum_link($paged - 1).'"><span>Previous</span></a></li>';
//番号つきページ送りボタン
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"><a>'.$i.'</a></li>':'<li><a href="'.get_pagenum_link($i).'" class="inactive" >'.$i.'</a></li>';
}
}
//1つ進む
echo '<li class="next"><a href="'.get_pagenum_link($paged + 1).'"><span>Next</span></a></li>';
//最後尾へ
echo '<li class="last"><a href="'.get_pagenum_link($pages).'"><span>Last</span></a></li>';
echo '</ul>';
}
}

3. スタイルシートを貼り付けます。オリジナルとは違ってリンク色を変更しています。

/* ===============================================
# レスポンシブ ページネーション
=============================================== */
.pagination{
list-style-type: none;
padding-left: 0;
margin: 30px 0;
}

.pagination,
.pagination li a {
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
}

.pagination a {
font-weight: 300;
padding-top: 1px;
text-decoration:none;
border: 1px solid #ddd;
border-left-width: 0;
min-width:36px;
min-height:36px;
color: #333;
}

.pagination li:not([class*="current"]) a:hover {
background-color: #eee;
}

.pagination li:first-of-type a {
border-left-width: 1px;
}

.pagination li.first span,
.pagination li.last span,
.pagination li.previous span,
.pagination li.next span {
/* screen readers only */
position: absolute;
top: -9999px;
left: -9999px;
}

.pagination li.first a::before,
.pagination li.last a::after,
.pagination li.previous a::before,
.pagination li.next a::after {
display: inline-block;
font-family: Fontawesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
transform: translate(0, 0);
}

.pagination li.first a::before { content: "\f100"; }
.pagination li.last a::after { content: "\f101"; }

.pagination li.previous a::before { content: "\f104"; }
.pagination li.next a::after { content: "\f105"; }

.pagination li.current a {
background-color: #ddd;
cursor: default;
pointer-events: none;
}

.pagination > li:first-child > a {
border-bottom-left-radius: 4px;
border-top-left-radius: 4px;
}

.pagination > li:last-child > a {
border-bottom-right-radius: 4px;
border-top-right-radius: 4px;
}

.pagination>li>a, 
.pagination>li>span {
  color: rgba(0,0,0,1);
}
.pagination>li>a:focus, 
.pagination>li>a:hover, 
.pagination>li>span:focus, 
.pagination>li>span:hover {
  color: rgba(125,125,125,1);
}

@media only screen and ( max-width: 680px ) {
.pagination li.first,
.pagination li.last {
/* screen readers only */
position: absolute;
top: -9999px;
left: -9999px;
}

.pagination li.previous a { border-left-width: 1px; }
}

@media only screen and ( max-width: 500px ) {
.pagination li {
/* screen readers only */
position: absolute;
top: -9999px;
left: -9999px;
}

.pagination li.current,
.pagination li.first,
.pagination li.last,
.pagination li.previous,
.pagination li.next{
position: initial;
top: initial;
left: initial;
}

.pagination li.previous a { border-left-width: 0; }
}

@media only screen and ( max-width: 400px ) {
.pagination li.first,
.pagination li.last {
/* screen readers only */
position: absolute;
top: -9999px;
left: -9999px;
}

.pagination li.previous a { border-left-width: 1px; }
}

@media only screen and ( max-width: 240px ) { /* For watches? */
.pagination li { width: 50%;}

.pagination li.current {
order: 2;
width: 100%;
border-left-width: 1px;
}
}

4.ページネーション表示箇所にコードを貼り付けます。

<!--ページネーション-->
<?php if (function_exists('responsive_pagination')) {
responsive_pagination($additional_loop->max_num_pages);
} ?>

以上で完成です。