このプログラムは、コリスさんのサイトにある「WordPressにプラグイン無しでページネーションを設置する方法」を少し改造したものです。
[PHP]
function custom_pagination($pages = '', $range = 2){
$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 '
if($paged > 1){
echo '«';
echo '‹';
}else{
echo '«';
echo '‹';
}
for ($i=1; $i <= $pages; $i++){
//1~3ページまでの設定
if($paged <= $range){
if($paged == $i){
echo ''.$i.'';
}elseif($i <= $showitems){
echo ''.$i.'';
}
}
//最後から2つ前~最後までの設定
elseif($paged >= ($pages-1)){
if($paged == $i){
echo ''.$i.'';
}elseif(($pages - $showitems) < $i){
echo ''.$i.'';
}
}
//その他
else{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems)){
echo ($paged == $i)? ''.$i.'':''.$i.'';
}
}
}
if($paged < $pages){
echo '›';
echo '»';
}else{
echo '›';
echo '»';
}
echo '
';
}
}
[/PHP]
改造箇所
もともと利用させていただいたプログラムでは、5ページ分のナビゲーションを出すつもりでも、1~2ページ目までは5ページ分のナビゲーションが出ず、3ページ目になって、ようやく5ページ分のナビゲーションが出るという仕組みでした。(下図参照)
1ページ目のナビゲーション
2ページ目のナビゲーション
3ページ目のナビゲーション
4ページ目のナビゲーション
これでも特に問題はないのですが、できれば3ページ目以降のように、ナビゲーション数は常に一定数を保ちたいと思い、常に5ページ分のナビゲーションが出るように改造しました。(当然ですが5ページ分のナビゲーションが出るのは5ページ分の投稿数がある場合です。2、3、4ページ分しか投稿数が無い場合は2、3、4ページ分のナビゲーションしか出ません。)
なお、ページのナビゲーション数を増やしたい場合は第2引数のrangeに表示したい数の「半分-1」の数値を入れてください。(5ページなら2、7ページなら3、9ページなら4といった感じ。)