企業サイトを製作中、カテゴリ一覧表示ページでページ分けをする事になり、ページネーションをつけてみました。
ページネーションの表示自体はうまくいったものの。表題の通り2ページ目以降が404エラーを吐くようになりました。
ネット上で色々検索し、プラグインも試してみましたが結果は同じでした。お助けくださいm(_ _)m
ソースコード category-news.php
php
1<?php 2$paged = get_query_var('paged') ? get_query_var('paged') : 1; 3$args = array( 4 'paged' => $paged, 5 'orderby' => 'post_date', 6 'order' => 'DESC', 7 'post_type' => 'news', 8 'post_status' => 'publish', 9 'posts_per_page' => 2, 10 //'category_name' => 'event' 11); 12$the_query = new WP_Query($args); 13$pages = $the_query->max_num_pages; 14$wp_query->max_num_pages = $pages; 15if ($the_query->have_posts()) : 16 while ($the_query->have_posts()) : $the_query->the_post(); 17 18//記事表示ループ処理 19 20?> 21<?php wp_reset_postdata(); ?> 22<?php endwhile; 23endif; ?> 24 25//ページネーション処理 26<?php 27if ($the_query->max_num_pages > 1) { 28 $page_links = paginate_links(array( 29 'base' => get_pagenum_link(1) . '%_%', 30 'format' => '/page/%#%', 31 'current' => max(1, $paged), 32 'type' => 'array', 33 'prev_text' => '<', 34 'next_text' => '>', 35 'total' => $the_query->max_num_pages 36 )); 37 // 2. 「<」 がない場合は追加 38 if (strpos($page_links[0], 'prev page-numbers') === false) { 39 array_unshift($page_links, '<span class="prev page-numbers"><</span>'); 40 } 41 // 3. 「>」がない場合は追加 42 if (strpos($page_links[count($page_links) - 1], 'next page-numbers') === false) { 43 array_push($page_links, '<span class="next page-numbers">></span>'); 44 } 45 // 4. 'type' => 'list' の場合と同じ処理 46 $r = ''; 47 $r .= "<ul class='page-numbers'>\n\t<li>"; 48 $r .= join("</li>\n\t<li>", $page_links); 49 $r .= "</li>\n</ul>\n"; 50 echo $r; 51} else { 52 echo '<ul class="page-numbers">'; 53 echo ' <li><span href="#" class="prev page-numbers"><</span></li>'; 54 echo ' <li><span class="page-numbers current">1</span></li>'; 55 echo ' <li><span href="#" class="next page-numbers">></span></li>'; 56 echo '</ul>'; 57} 58?> 59<?php wp_reset_postdata(); ?>
php
1//function.php 2function category_link_custom($query = array()) 3{ 4 5 // 子カテゴリーの404を回避 6 if (isset($query['category_name']) && strpos($query['category_name'], '/') === false && isset($query['name'])) { 7 $parent_category = get_category_by_slug($query['category_name']); 8 $child_categories = get_categories('child_of=' . $parent_category->term_id); 9 foreach ($child_categories as $child_category) { 10 if ($query['name'] === $child_category->category_nicename) { 11 $query['category_name'] = $query['category_name'] . '/' . $query['name']; 12 unset($query['name']); 13 } 14 } 15 } 16 17 // カテゴリーのページ送りを修正して404を回避 18 if (isset($query['name']) && $query['name'] === 'page' && isset($query['page'])) { 19 $paged = $query['page']; 20 if (is_numeric($paged)) { 21 $query['paged'] = (int) $paged; 22 unset($query['name']); 23 unset($query['page']); 24 } 25 } 26 27 return $query; 28} 29add_filter('request', 'category_link_custom');
試したこと
- wordpressダッシュボードの「1ページに表示する最大投稿数」を
サブループ内のposts_per_pageの表示数と同じに設定
- wordpressダッシュボードのパーマリンクの設定の変更
/%category%/%postname%/.html
- プラグインを使用
参考にしたサイト
↓こちらのサイトでは出来ている
https://sockma.jp/category/brand/page/2
https://qiita.com/takeshi_du/items/00a9ebe7bc35d743905b
https://qiita.com/kymtgt/items/9eb90764ebc060fac297
https://www.ecco.jp/blog/wp_query/#2
https://unskilled.site/wordpress%E3%81%A7%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%9A%E3%81%AB%E7%B0%A1%E5%8D%98%E3%81%AB%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%8D%E3%83%BC%E3%82%B7%E3%83%A7/
https://cravelweb.com/webdesign/wp-customize/post-3773
あなたの回答
tips
プレビュー