WordPressの投稿一覧画面でページネーションを実装したいのですが2ページ目以降の記事に切り替わらず困っております。
URLはhttp://ドメイン/news/?pages=2
と変わるのですが記事は1ページ目のままでカレントも1のままです。
WP_Query を使用せずに通常のループにして、ページネーションの部分に、the_posts_pagination 関数を使用する等の解説ページを見たのですが具体的にどこのコードを変えればいいのか解らず試せていません。
ご教授のほどお願いいたします。
php
1//archive-news.php 2<ul class="news-list"> 3 <?php 4 $args = array( 5 'post_type' => 'post', 6 'posts_per_page' => 2 7 ); 8 $the_query = new WP_Query( $args ); 9 ?> 10 <?php if ( $the_query->have_posts() ): ?> 11 <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> 12 <li class="news-item"> 13 <a href="<?php the_permalink(); ?>"> 14 <p class="date"><?php echo get_the_date('Y.m.d'); ?></p> 15 <h3 class="title"><?php the_title(); ?></h3> 16 </a> 17 </li> 18 <?php endwhile; ?> 19</ul> 20<?php custom_pagination($the_query, 2); ?> 21<?php else : ?> 22<p>表示できる記事がありません</p> 23<?php endif; wp_reset_postdata(); ?>
php
1//function.php 2function custom_pagination($the_query, $next_prev_num = 2){ 3 $posts_per_page = $the_query->query['posts_per_page']; 4 $current_page = (int)$the_query->query['offset'] / $posts_per_page + 1; 5 6 $page_final = ceil(($the_query->found_posts) / $posts_per_page); 7 $paging_start = ($current_page - $next_prev_num) > 0 ? ($current_page - $next_prev_num) : 1; 8 $paging_end = ($current_page + $next_prev_num) < $page_final ? ($current_page + $next_prev_num) : $page_final; 9 10 if($page_final == 1) return false; 11 12 if($paging_start + ($next_prev_num * 2) >= $page_final){ 13 $paging_start = $paging_start - abs(($page_final - ($paging_start + $next_prev_num)) - $next_prev_num); 14 if($paging_start <= 0) $paging_start = 1; 15 } 16 if($paging_end - ($next_prev_num * 2 + 1) <= 0){ 17 $paging_end = $paging_end + abs($paging_end - ($next_prev_num * 2 + 1)); 18 if($paging_end > $page_final) $paging_end = $page_final; 19 } 20 21 echo '<div class="pager">'."\n"; 22 echo '<ul class="pager-list">'."\n"; 23 for($pages = $paging_start; $pages <= $paging_end; $pages++){ 24 if($pages == $paging_start){ 25 if($paging_start > 1) echo '<li class="pager-first"><a href="'. add_query_arg('pages', 1) .'">FIRST</a></li>'."\n"; 26 if($current_page != 1) echo '<li class="pager-prev"><a href="'. add_query_arg('pages', $current_page - 1) .'">PREV</a></li>'."\n"; 27 } 28 29 if($current_page == $pages){ 30 echo '<li><span>'. $pages .'</span></li>'."\n"; 31 }else{ 32 echo '<li><a href="'. add_query_arg('pages', $pages) .'">'. $pages .'</a></li>'."\n"; 33 } 34 35 if($pages == $paging_end){ 36 if($current_page != $page_final) echo '<li class="pager-next"><a href="'. add_query_arg('pages', $current_page + 1) .'">NEXT</a></li>'."\n"; 37 if(($page_final - $next_prev_num) > $current_page) echo '<li class="pager-last"><a href="'. add_query_arg('pages', $page_final) .'">LAST</a></li>'."\n"; 38 } 39 } 40 echo '</ul>'."\n"; 41 echo '</div>'."\n"; 42}
一覧ページを固定ページに変更してみたりしましたが2ページ目が表示されずです...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/17 15:48
2020/09/18 01:31
2020/09/18 02:03 編集
2020/09/18 04:22 編集
2020/09/18 04:29