WordPressでプラグイン無しでページ分割(ページ送り)

WordPressにはページ送りをつける多くの便利なプラグインが多数あります。

中にはWordPressのバージョンにより使用するバージョンが異なることもあり、使いにくいケースもあるかと思います。WordPressには標準機能でページ分割(ページ送り)を実装できるテンプレートタグが実は用意されています。管理パネルで利用されているそうです。

そう、テーマでこのテンプレートタグを使いWP-PageNaviなどのプラグインを利用する事無く同等の機能を持たせることが可能です。

ということで以下、覚え書きです。


[html]
<div class=”tablenav”><?php global $wp_rewrite;
$paginate_base = get_pagenum_link(1);
if (strpos($paginate_base, ‘?’) || ! $wp_rewrite->using_permalinks()) {
$paginate_format = ”;
$paginate_base = add_query_arg(‘paged’, ‘%#%’);
} else {
$paginate_format = (substr($paginate_base, -1 ,1) == ‘/’ ? ” : ‘/’) .
user_trailingslashit(‘page/%#%/’, ‘paged’);;
$paginate_base .= ‘%_%’;
}
echo paginate_links( array(
‘base’ => $paginate_base,
‘format’ => $paginate_format,
‘total’ => $wp_query->max_num_pages,
‘mid_size’ => 5,
‘current’ => ($paged ? $paged : 1),
)); ?></div>
[/html]

続いてCSSで装飾します。

[css]
.tablenav {
color: #2583ad;
background:white;
margin: 1em auto;
line-height:2em;
text-align:center;
}

a.page-numbers, .tablenav .current {
color: #00019b;
padding: 2px .4em;
border:solid 1px #ccc;
text-decoration:none;
font-size:smaller;
}

a.page-numbers:hover {
color:white;
background: #328ab2;
}

.tablenav .current {
color: white;
background: #328ab2;
border-color: #328ab2;
font-weight:bold:
}

.tablenav .next, .tablenav .prev {
border:0 none;
background:transparent;
text-decoration:underline;
font-size:smaller;
font-weight:bold;
}[/css]

こちらのサイトを参考にさせていただきました。
yuriko.net

関連記事