WordPressのページネーションで404エラーは頻出ネタで自分なりに調べてみましたが解決しないのでこちらでお尋ねします。
現状は以下のようなURL構成です。
トップページ:ドメイン名(使用テンプレート:front-page.php)
ブログのトップページ:ドメイン名/blog(使用テンプレート:home.php スラッグ:blog)
投稿記事:ドメイン名/blog/カテゴリー/記事ID (使用テンプレート:single.php)
カテゴリーページ:ドメイン名/blog/カテゴリー (使用テンプレート:archive.php)
パーマリンク設定は
ドメイン名/blog/%category%/%post_id%
カテゴリーベースは空欄です。
プラグインのYoastSEOの設定でカテゴリーベースの「category」を削除しています。
この状態で、URL構成は実現できていますが、カテゴリーページのページネーションの2ページ目が404となります。
ドメイン名/blog/category/page/2
が404、ということです。
ブログ記事アーカイブの2ページ目はちゃんと表示されます。
YoastSEOのカテゴリーベース設定をオフにして、こちらの記事(https://web-tech-blog.com/wordpress/wp-pagenavi_permalink_notfound.html)を参考に、functions.phpに以下のソースを記述すると、カテゴリーの2ページ目はちゃんと表示されますが、ブログ記事の2ページ目が404になります。
php
1function catbase_function($link) { 2return str_replace("/category/", "/", $link); 3} 4function catbase_flush_rules() { 5global $wp_rewrite; 6$wp_rewrite->flush_rules(); 7} 8function catbase_rewrite($wp_rewrite) { 9$new_rules = array('(.+)/page/(.+)/?' => 'index.php?category_name='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2)); 10$wp_rewrite->rules = $new_rules + $wp_rewrite->rules; 11} 12add_filter('user_trailingslashit', 'catbase_function'); 13add_action('init', 'catbase_flush_rules'); 14add_filter('generate_rewrite_rules', 'catbase_rewrite');
こうすると、ドメイン名/blog/page/2
が404になります。
使用テーマはunderscoreを独自カスタマイズしたのですが、archive.phpのループ部分とページネーションはオリジナルのままです。
php
1<?php 2if ( have_posts() ) : ?> 3while ( have_posts() ) : the_post(); ?> 4 5ループ処理 6 7<?php endwhile; 8 9the_posts_navigation(); 10 11else : 12 13get_template_part( 'template-parts/content', 'none' ); 14 15endif; ?>
1ページ内の表示記事数は設定>表示設定で10にしたあるままです。
これは問題はソースやプラグインではなく、こちら(https://osha-kimi.com/memo/custompost-pagination/)にあるようにblogのトップと個別記事のURLがダブってしまうのが原因なのでしょうか。
しかしいまやろうとしているURLの構成はごく普通のものだと思うのですが、これを実現しつつ、ページネーションの2ページ目以降も404にならないようにするには一体どうしたらいいのでしょうか。
どうかどなたかおわかりの方、ご教授よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。