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
function catbase_function($link) { return str_replace("/category/", "/", $link); } function catbase_flush_rules() { global $wp_rewrite; $wp_rewrite->flush_rules(); } function catbase_rewrite($wp_rewrite) { $new_rules = array('(.+)/page/(.+)/?' => 'index.php?category_name='.$wp_rewrite->preg_index(1).'&paged='.$wp_rewrite->preg_index(2)); $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; } add_filter('user_trailingslashit', 'catbase_function'); add_action('init', 'catbase_flush_rules'); add_filter('generate_rewrite_rules', 'catbase_rewrite');
こうすると、ドメイン名/blog/page/2
が404になります。
使用テーマはunderscoreを独自カスタマイズしたのですが、archive.phpのループ部分とページネーションはオリジナルのままです。
php
<?php if ( have_posts() ) : ?> while ( have_posts() ) : the_post(); ?> ループ処理 <?php endwhile; the_posts_navigation(); else : get_template_part( 'template-parts/content', 'none' ); endif; ?>
1ページ内の表示記事数は設定>表示設定で10にしたあるままです。
これは問題はソースやプラグインではなく、こちら(https://osha-kimi.com/memo/custompost-pagination/)にあるようにblogのトップと個別記事のURLがダブってしまうのが原因なのでしょうか。
しかしいまやろうとしているURLの構成はごく普通のものだと思うのですが、これを実現しつつ、ページネーションの2ページ目以降も404にならないようにするには一体どうしたらいいのでしょうか。
どうかどなたかおわかりの方、ご教授よろしくお願いいたします。
まだ回答がついていません
会員登録して回答してみよう