プラグインなしでページナビを表示したいのですが…
-
タクソノミー一覧ページとカテゴリー一覧ページにページナビを表示させたいと思い、
ひとまずプラグインなしでできないか検索したところ、
下記のソースがやたらと見つかったのでこれを試させていただきました。function 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=\"pagination\"><span>Page ".$paged." of ".$pages."</span>"; if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>« First</a>"; if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹ Previous</a>"; for ($i=1; $i <= $pages; $i++) { 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 && $showitems < $pages) echo "<a href=\"".get_pagenum_link($paged + 1)."\">Next ›</a>"; if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo "<a href='".get_pagenum_link($pages)."'>Last »</a>"; echo "</div>\n"; } }
上記を「functions.php」に記述。
そして「category.php」「taxonomy-タクソノミー名.php」には下記ループを記述。▼「category.php」
<?php $cat = get_the_category(); $cat = $cat[0];{ $catid= "$cat->cat_ID"; } $myposts = get_posts('numberposts=3&order=asc&paged='.$paged. '&category='.$catid); foreach($myposts as $post) :?> //表示させるコンテンツ内容を記載 <?php endforeach; ?>
▼「taxonomy-タクソノミー名.php」
<?php $term = array_shift(get_the_terms($post->ID, 'jisseki_cat')); ?> <?php $tax_posts = get_posts('post_type=jisseki_post&posts_per_page=3&taxonomy=jisseki_cat&paged='.$paged. '&term='.esc_html($term->slug)); if($tax_posts): ?> <?php foreach($tax_posts as $tax_post): ?> //表示させるコンテンツ内容を記載 <?php endforeach; ?> <?php endif; ?>
各ループの外にナビゲーション表示のためのソース、
<?php if (function_exists("pagination")) { pagination($additional_loop->max_num_pages); } ?>
を記載。
当初「$paged」を記述していなかったのですが、
そのために1ページ目と同じ内容のものが次ページ以降も表示されるという症状になりました。
「$paged」を記述し、表示設定の「1ページに表示する最大投稿数」を1にすることで、
ページ送りはちゃんとされるようになりました。
つまり1ページ目には3件、2ページ目には2件が表示されるようになりました。しかし今テストで記事は5件しか登録していません。
それを3件表示にすることで次ページに残りを表示させるようにしたのですが、
うまく稼働していれば「 [Page 1 of 2] 1 2 」と表示されるはずなのに、
「 [Page 1 of 5] 1 2 3 4 5 」となってしまうのです。
3ページ以降もページはあるんですが、ループ内は空白状態。「page-カスタム投稿タイプ名.php」では、「 [Page 1 of 2] 1 2 」となってちゃんと動いてくれました。
ちなみに「page-カスタム投稿タイプ名.php」は「query_posts」で書いてかつ、
「$paged」を書くことでうまくいきました。そもそもまだまだWordpressやPHPが不慣れなのにプラグインなしでやろうとしたのが間違いだったのかも知れない。
そう思って「WP-PageNavi」というプラグインを入れて試してみたのですが、結果は何と全く同じ。「page-カスタム投稿タイプ名.php」では「 [Page 1 of 2] 1 2 」となり、
「category.php」「taxonomy-タクソノミー名.php」では「 [Page 1 of 5] 1 2 3 4 5 」と…今日一日、朝から一つずつ解決していきながらここまでたどり着いたのですが、
ここから先がどうしても解決できず投稿させていただきました。お分かりになる方がいらっしゃいましたら、ご教授いただければ幸いです。
よろしくお願いいたします。
- トピック「プラグインなしでページナビを表示したいのですが…」には新たに返信することはできません。