WordPressでカテゴリー一覧などのアーカイブページで「ページ送り」実装をする方法です。
フォーラムをみてもイマイチわからないのが残念。でも結構みんな同じところで悩んでいるんだなぁ、とちょっと安心。
「カテゴリーページでページ送りをしたいんだ!」という、同じお悩みをお持ちの方にサクッと説明します。
アーカイブページやカテゴリーページで、エントリー一覧を表示させるには、次のような流れになっていると思います。
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// 投稿のループ処理
endwhile;
// ページ送りの処理
else :
// 投稿がない場合の処理
endif;
?>
このページ送りの処理に、
<?php posts_nav_link();?>
と記述するだけでも、「« 前ページへ — 次ページへ »」というふうに表示されますが、スタイルを変えたいときにちょっと厄介です。
そこで、以下のように記述するとクラスが指定できるので、スタイルをあてることができます。
<?php
// リンクが無い場合はNULLが返ってくる
$prev_link = get_previous_posts_link('前のページ');
$next_link = get_next_posts_link('次のページ');
if ( isset( $prev_link ) or isset( $next_link ) ) {
echo '<ul id="pagination">', PHP_EOL;
if( isset( $prev_link ) ) {
echo '<li>',$prev_link,'</li>', PHP_EOL;
}
if( isset( $next_link ) ) {
echo '<li>',$next_link,'</li>', PHP_EOL;
}
echo '</ul>', PHP_EOL;
}
?>
はい、これでクラス指定ができるようになりました。あとは、お好みでスタイルを整えれば完成です。
例えば、こんな感じで。
ul#pagination {
list-style-type: none;
overflow: hidden;
padding: 0 10px;
margin: 15px 0;
}
ul#pagination.posts li {
}
ul#pagination.posts li a {
display: block;
padding: 3px 5px;
border: 1px solid #aaa;
border-radius: 3px;
background-color: #556b2f;
color: #fff;
}
ul#pagination.posts li a:hover {
background-color: #99C348;
}
ul#pagination.post li.next,
ul#pagination.posts li.prev {
float: left;
}
ul#pagination.post li.prev,
ul#pagination.posts li.next {
float: right;
}




