| ブログトップ | CMS関連 | PHP関連 |

WordPressでページネイション

このプログラムは、コリスさんのサイトにある「WordPressにプラグイン無しでページネーションを設置する方法」を少し改造したものです。


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 '<div class="page_navi">';
		
		if($paged > 1){
			echo '<a href="'.get_pagenum_link(1).'">&laquo;</a>';
			echo '<a href="'.get_pagenum_link($paged - 1).'">&lsaquo;</a>';
		}else{
			echo '<span class="current">&laquo;</span>';
			echo '<span class="current">&lsaquo;</span>';
		}
 		
	    for ($i=1; $i <= $pages; $i++){
			//1~3ページまでの設定
			if($paged <= $range){
				if($paged == $i){
					echo '<span class="current">'.$i.'</span>';
				}elseif($i <= $showitems){
					echo '<a href="'.get_pagenum_link($i).'" class="inactive">'.$i.'</a>';
				}
			}
			//最後から2つ前~最後までの設定
			elseif($paged >= ($pages-1)){
				if($paged == $i){
					echo '<span class="current">'.$i.'</span>';
				}elseif(($pages - $showitems) < $i){
					echo '<a href="'.get_pagenum_link($i).'" class="inactive">'.$i.'</a>';
				}
			}
			//その他
			else{
				if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems)){
					echo ($paged == $i)? '<span class="current">'.$i.'</span>':'<a href="'.get_pagenum_link($i).'" class="inactive">'.$i.'</a>';
				}
			}
		}
		
		if($paged < $pages){
			echo '<a href="'.get_pagenum_link($paged + 1).'">&rsaquo;</a>';
			echo '<a href="'.get_pagenum_link($pages).'">&raquo;</a>';
		}else{
			echo '<span class="current">&rsaquo;</span>';
			echo '<span class="current">&raquo;</span>';
		}
		
		echo '</div>';
	}
}

改造箇所

もともと利用させていただいたプログラムでは、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といった感じ。)

日々の生活にhappyをプラスする|ハピタス

このエントリーをはてなブックマークに追加

LINEで送る

nandani | 2012年09月04日 | コメント(0) | トラックバック(1) | CMS関連 | PHP関連

トラックバック

トラックバックURL

トラックバック一覧

[...] これでプラグイン無しでページネーションが実装できました。 この方法に関してはたくさんの記事がありますので良かったら調べてみてください! WordPressにプラグイン無しでページネーションを設置する方法 | コリス WordPress プラグインなしでシンプルなページネーションを実装 | 福島県郡山市のホームページ制作、Web制作 Kyasper Web Design キャスパーウェブデザイン WordPressでページネイション | ダリの雑記:WEBプログラム版 [...]

コメントする

※メールアドレスが公開されることはありません。

名前 *
メール*
URL
Copyright(c) 2010 - 2017 ダリの雑記