プラグイン「WP-PageNavi 」を使わずに、テンプレートタグ「paginate_links()」を使って同等の機能を作成できることを以下のサイトで知り、参考にさせていただき自分用に変更したもの。(と言っても、元の部分はほとんど変更なしというか変更は不要)
Yuriko.Net 「WP-PageNavi を使わずにナビゲーション表示」
「前へ」「次へ」の文字の変更、表示件数の指定、その前後に画像などを挿入できるようにパラメータを渡せるようにしたもの。
例:「前へ」「次へ」の文字の前に画像を挿入する場合、以下を表示するテンプレートに記述。
<?php $args = array( 'prev_text' => '<img src="'.get_template_directory_uri(). '/images/arrow_left_green.png"> 前へ', 'next_text' => '次へ <img src="'.get_template_directory_uri(). '/images/arrow_green.png">', ); pagenavi($args); ?>
以下を functions.php に記述。
function pagenavi($args = array()) { //デフォルト値 $defaults = array( 'class_name' => 'pagenavi', //div 要素のクラス名 'show_all' => false, //全件表示するかどうか。 'prev_next' => true, //「前へ」「次へ」のリンクの有無 'prev_text' => __('« Previous'), //「前へ」のテキスト。 'next_text' => __('Next »'), //「次へ」のテキスト 'end_size' => 1, //最初のページと最終のページ部の表示件数(1以上) 'mid_size' => 3, //現在のページ部分(但し現在のページを含まない)の表示件数(0以上) ); $args = wp_parse_args( $args, $defaults ); //パラメータを解析し、省略されたパレメータにはデフォルト値をセット extract( $args, EXTR_SKIP ); //キーを変数名、値を変数の値として処理 echo '<div class="' .$class_name. '">'; global $wp_rewrite; $paginate_base = get_pagenum_link(1); if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) { $paginate_format = ''; $paginate_base = esc_url(add_query_arg('paged', '%#%')); } else { $paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') . user_trailingslashit('page/%#%/', 'paged');; $paginate_base .= '%_%'; } global $paged; global $wp_query; echo paginate_links( array( 'base' => $paginate_base, 'format' => $paginate_format, 'total' => $wp_query->max_num_pages, 'current' => ($paged ? $paged : 1), 'show_all' => $show_all, 'prev_next' => $prev_next, 'prev_text' => $prev_text , 'next_text' => $next_text , 'end_size' => $end_size, 'mid_size' => $mid_size, )); echo '</div>'; }
マウスオーバー時に画像を変更するには、jQuery を使って以下のように行う。
arrow_left_green.png を arrow_left_whites.png に
arrow_green.png を arrow_white.png に入れ替える
jQuery(document).ready(function($) { $('.pagenavi a.prev, .pagenavi a.next').hover( function() { $(this).find('img').attr('src', function(index, currentSrc) { return currentSrc.replace(/green/, 'white'); }); }, function() { $(this).find('img').attr('src', function(index, currentSrc) { return currentSrc.replace(/white/, 'green'); }); }); });
CSSは以下(参考にさせていただいたものとほぼ同じ。クラス名を変更しているのと若干の変更)
.pagenavi { color: #2583ad; margin: 1em auto; line-height:2em; text-align:center; } a.page-numbers, .pagenavi .current { color: #666666; padding: 2px .4em; border:solid 1px #ccc; text-decoration:none; font-size:smaller; background:white; } a.page-numbers:hover { color:white; background: #693; } .pagenavi .current { color: white; background:#693; border-color:#690; font-weight:bold; } .pagenavi .next, .pagenavi .prev { border:0 none; background:transparent; font-size:smaller; }