wordpressで記事が増えてくると次のページへだけでは、ユーザービリティ上あまりやさしくありません。
今回は、下のような次のページへだけではなくページ数できりかえれる様にする方法を解説します。
wordpressでのタグ
<?php $pagemax = $wp_query->max_num_pages; $current = $paged; if(!$current){$current = 1; } ?> <?php previous_posts_link('<'); ?> <?php for($i=1; $i <= $pagemax; $i++): ?> <?php if( $i == $current): ?> <span><?php echo $i; ?></span> <?php else: ?> <a href="<?php echo get_pagenum_link($i); ?>"><?php echo $i; ?></a> <?php endif; ?> <?php endfor; ?> <?php next_posts_link('>'); ?>
それでは一つ一つ解説していきます。
<?php $pagemax = $wp_query->max_num_pages;
$pagemaxは$wp_query->max_num_pages; を使って総ページ数を取得します。
$current = $paged;
$pagedを使って、現在ユーザーが見ているページの番号を変数に保存します。
if(!$current){$current = 1; } ?>
1ページ目のときは$pagedが空なので$currentに1を保存します。
<?php previous_posts_link('<'); ?>
現在のページよりも前のページへのリンクを表示します。
<?php for($i=1; $i <= $pagemax; $i++): ?> <?php if( $i == $current): ?> <span><?php echo $i; ?></span> <?php else: ?> <a href="<?php echo get_pagenum_link($i); ?>"><?php echo $i; ?></a> <?php endif; ?> <?php endfor; ?>
ifによって現在のページとそれ以外のページで表示方法を変更し、それを全ページ数分繰り返します。
<?php next_posts_link('>'); ?>
現在のページよりも次のページへのリンクを表示します。
スタイルシート
このサイトで使っているスタイルシートです。
.pagenum{text-align:center; padding-top:20px;} .pagenum a{border: solid 1px #aaaaaa; margin:0 5px;} .pagenum a:hover{background:#f7e29e;} .pagenum span{background-color:#dddddd; color:#888888; margin:0 5px;} .pagenum a,.pagenum span{padding:5px 10px;}