>

WordPressでプラグインを使わずにページ送りを作成する

WordPressでプラグインを使わずにページ送りを作成する

WordPressでプラグインを使わずに簡単なページ送りを作成するコードを書いてみました.

 

«最初 2 3 4 5 6 7 8 最後»

こんな感じのナビゲーションを出力することができます.

 

以下の2つの関数をfunctions.phpなど適当な場所に貼り付けてください.

// ページネーションを出力
function get_pagination($len = 7){
	global $paged, $wp_query;
	$current = ( !empty($paged) ) ? intval($paged) : 1;// 現在のページ
	$num_pages = ( !empty($wp_query->max_num_pages) ) ? intval($wp_query->max_num_pages) : 1;// 総ページ数
	$nums = get_page_nums($num_pages, 1, $current, $len);

	$out = '<ul class="pagination">';
	$out .= '<li><a href="'.get_pagenum_link(1).'">&laquo;最初</a></li>';
	foreach($nums as $n){
		if( $n == $current ){
			$out .= '<li class="current"><span>'.$n.'</span></li>';
		} else {
			$out .= '<li><a href="'.get_pagenum_link($n).'">'.$n.'</a></li>';
		}
	}
	$out .= '<li><a href="'.get_pagenum_link($num_pages).'">最後&raquo;</a></li>';
	$out .= '</ul>';
	echo $out;
}

// 最大長が$lengthのページ配列を取得
function get_page_nums($num_all, $num_per_page, $current_page = 1, $length = 7){
	$num_pages = ceil($num_all / $num_per_page);

	$append = 0;
	$start = $current_page - floor($length / 2);
	if( $start < 1 ){ $append = 1 - $start; $start = 1;}

	$prepend = 0;
	$end = $current_page + floor($length / 2);
	if( $end > $num_pages ){ $prepend = $end - $num_pages; $end = $num_pages;}

	$result = array();
	for($i = $start - $prepend; $i <= $end + $append; $i++){
		if( $i < 1 ){ continue;}
		if( $i > $num_pages ){ break;}
		$result[] = intval($i);
	}
	return $result;
}

 

あとはページ送りを表示したい場所からget_pagination()を呼び出せばOKです.

<?php get_pagination(); ?>

 

ポイントは、$pagedで現在のページ, $wp_query->max_num_pagesで総ページ数が取得できるということです.

おすすめ記事ランダム

この記事にコメントする