質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

0回答

729閲覧

wordpress カスタム投稿タイプカテゴリ一覧のページネーション2ページ目(/page/2)が404になってしまう

Overrun

総合スコア18

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2021/02/26 19:04

企業サイトを製作中、カテゴリ一覧表示ページでページ分けをする事になり、ページネーションをつけてみました。
ページネーションの表示自体はうまくいったものの。表題の通り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">&#x3c;</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">&#x3e;</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">&lt;</span></li>'; 54 echo ' <li><span class="page-numbers current">1</span></li>'; 55 echo ' <li><span href="#" class="next page-numbers">&gt;</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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問