pagerがうまく作動しない
-
こちらの記事「WordPress 投稿一覧に年と月の見出しを付ける方法」を参考に年別の記事一覧を作っています。
以下のコードで年別の表示ができたのでうまくいっていると思ったのですが、ページあたりの件数をいろいろ変えていくとうまく動作していないようです。
1ページ1件にしてみると、3ページ目からは表示されなくなってしまいます。<article> <?php // 投稿一覧に年と月の見出しを付ける $args = array( 'paged' => $paged, 'cat' => 30, // 任意のカスタム投稿タイプを指定 'posts_per_page' => -1, // 1ページに表示する最大投稿数を指定、-1は全てを表示 'order' => 'DESC', // 降順でソート 'orderby'=>'date' // 日付で並べる ); $wp_query = new WP_Query($args); if($wp_query->have_posts()): $post_year = false; // 年の比較用変数の初期化 $post_month = false; // 月の比較用変数の初期化 echo '<h1>投稿一覧</h1>'; while ($wp_query->have_posts()): $wp_query->the_post(); if( $post_year != get_post_time('Y') ) { // 比較の値と投稿月が異なる場合に以下を出力 if ( $post_year !== false ) { // 比較の値と投稿月が異なる場合に以下を出力 echo '</ul>'; } if ( $post_year != get_post_time('Y') ) { // 比較の値と投稿年が異なる場合に年を出力 echo '<h2>'.get_post_time('Y年').'</h2>'; //投稿の年を出力 } echo '<ul>'; } echo '<li><a href="'.get_the_permalink().'">'.get_the_title().'</a></li>'; // 投稿のリンクとタイトルを出力 $post_year = get_post_time('Y'); // 年月の比較用の変数に今の投稿の年月を代入 endwhile; wp_reset_postdata(); echo '</ul>'; endif; ?> <!-- pager --> <?php if (function_exists("pagination")) { pagination($the_query->max_num_pages); } ?> <!-- /pager --> </article>
pager(functions.phpに記入)
//ページネーションを追加 function pagination($pages = '', $range = 3) { $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 clearfix\"><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"; } }
もともとの年と月での記事一覧では、pagerはうまく動作しています。
pager自体は、他のページではちゃんと動作しています。
3件の返信を表示中 - 1 - 3件目 (全3件中)
3件の返信を表示中 - 1 - 3件目 (全3件中)
- トピック「pagerがうまく作動しない」には新たに返信することはできません。