【WordPress】WP-PageNaviで2ページ目以降が404になる問題の修正

WordPressにプラグインのWP-PageNaviを使ってページネーションを表示する場合、
2ページ目以降が404エラーになってしまう場合があります。

通常、パーマリンク設定やクエリの設定に関連している場合が多いですが、
以下のステップで問題の所在を確認していきます。

1. パーマリンク設定の確認

WP-PageNaviを正しく動作させるには、WordPressのパーマリンク設定が適切に構成されていることが重要です。WordPressの管理ダッシュボードから「設定」→「パーマリンク」に移動し、パーマリンク設定を確認します。一般的な設定としては、「投稿名」を選択することが多いです。設定を変更した場合は、設定を保存して変更を反映させてください。

2. functions.phpファイルの確認

functions.phpファイルにはページネーションに関連するカスタムクエリが記述されている場合があります。ページネーションのクエリが正しく設定されていることを確認します。

記述や設定がされている場合、そのコードがページネーションを正しく処理するようになっていることを確認します。また、このコードが他のカスタムルールと競合していないかも確認します。

3. WP-PageNaviプラグイン設定の確認

WP-PageNaviプラグインの設定を確認し、正しい設定が行われているかを確認してください。WP-PageNaviプラグインの設定画面から、ページネーションの挙動に関する設定を確認できます。

4. テーマの問題

問題の発生している一覧ページのテンプレートファイル(tag.phpやarchive.phpなど)が正しく設定されているか確認します。テーマファイルに問題がある場合、ページネーションが正しく動作しないことがあります。

これらのステップを確認して、問題を解決するのに役立つ情報を得ることができます。
問題が解決しない場合、ページネーションに関連する他のプラグインやカスタムコードが問題の原因である可能性があるため、それらも確認することが重要です。

URLからcategoryを削除するなど、カテゴリー一覧ページに独自の設定をしたことで、
タグ一覧ページの2ページ目以降が表示されない(404になる)ケースを例に修正方法を見ていきます。

上記の「2. functions.phpファイルの確認」にページネーションを設定する記述があったため、
その記述と競合しない新たなルールを加えました。

function custom_tag_pagination_rewrite_rule($rules) {
    $new_rules = array(
        'tag/(.+)/page/([0-9]{1,})/?$' => 'index.php?tag=$matches[1]&paged=$matches[2]',
        'tag/(.+)/?$' => 'index.php?tag=$matches[1]',
    );

    return $new_rules + $rules;
}

function custom_category_pagination_rewrite_rule($rules) {
    $new_rules = array(
        'category/(.+)/page/([0-9]{1,})/?$' => 'index.php?category_name=$matches[1]&paged=$matches[2]',
        'category/(.+)/?$' => 'index.php?category_name=$matches[1]',
    );

    return $new_rules + $rules;
}

add_filter('rewrite_rules_array', 'custom_tag_pagination_rewrite_rule');
add_filter('rewrite_rules_array', 'custom_category_pagination_rewrite_rule');

URLからcategoryを削除しつつ、tagは残し、タグ一覧ページの2ページ目以降が正常に認識され表示されるようになりました。

関連記事

コメントを残す

*