アーカイブページのページネーションをカスタマイズする方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
function pagination( $pages, $paged, $range = 2, $show_only = false ) { $pages = ( int ) $pages; //float型で渡ってくるので明示的に int型 へ $paged = $paged ?: 1; //get_query_var('paged')をそのまま投げても大丈夫なように //表示テキスト $text_first = "« 最初へ"; $text_before = "前へ"; $text_next = "次へ"; $text_last = "最後へ »"; if ( $show_only && $pages === 1 ) { // 1ページのみで表示設定が true の時 echo '<div class="pagination"><span class="current pager">1</span></div>'; return; } if ( $pages === 1 ) return; // 1ページのみで表示設定もない場合 if ( 1 !== $pages ) { //2ページ以上の時 echo '<div class="pagination">'; if ( $paged > $range + 1 ) { // 「最初へ」 の表示 echo '<a href="', get_pagenum_link(1) ,'" class="first">', $text_first ,'</a>'; } echo '<div class="prev">'; if ( $paged > 1 ) { // 「前へ」 の表示 echo '<a href="', get_pagenum_link( $paged - 1 ) ,'" class="prev">', $text_before ,'</a>'; } echo '</div>'; echo '<div class="page_num_wrap">'; echo '<span class="page_num">', $paged ,'/', $pages ,'</span>'; echo '</div>'; for ( $i = 1; $i <= $pages; $i++ ) { if ( $i <= $paged + $range && $i >= $paged - $range ) { // $paged +- $range 以内であればページ番号を出力 if ( $paged === $i ) { echo '<span class="current pager">', $i ,'</span>'; } else { echo '<a href="', get_pagenum_link( $i ) ,'" class="pager">', $i ,'</a>'; } } } echo '<div class="next">'; if ( $paged < $pages ) { // 「次へ」 の表示 echo '<a href="', get_pagenum_link( $paged + 1 ) ,'" class="next">', $text_next ,'</a>'; } echo '</div>'; if ( $paged + $range < $pages ) { // 「最後へ」 の表示 echo '<a href="', get_pagenum_link( $pages ) ,'" class="last">', $text_last ,'</a>'; } echo '</div>'; } } |
1 2 3 4 5 6 7 |
<?php if ( function_exists( 'pagination' ) ) : pagination( $query->max_num_pages, $paged ); //$wp_query ではなく $the_query ないことに注意! endif; wp_reset_postdata(); ?> |