WordPressでトップページのページネーションが404になる原因と解決方法

WordPressでトップページのページネーションが404になる原因と解決方法

WordPressでトップページのページネーションが404になる現象について

WordPressでブログ一覧ページを作っていて、

  • 1ページ目は表示されるのに
  • /page/2/ にアクセスすると404エラーになる

こんな問題で困っていませんか?

私自身も同じ現象にハマり、原因が分からずかなり悩みました。

同じように悩んでいる方に向けて、原因と解決方法を初心者向けに分かりやすく解説します。

※この記事は「トップページ(home.php)」でカスタム投稿を表示している場合の解決方法です。

実際に起きたエラー

/page/2/ にアクセスすると、以下のように404エラーが表示されました。

ページネーションが機能していない状態です。

結論(先に知りたい人向け)

原因はこれです

メインクエリとWP_Queryの不一致

原因の詳細

今回やっていたことはこれ

  • カスタム投稿 blog を表示したい
  • WP_Query を使って取得

NGコード(原因)

$results_query = new WP_Query($args);

❌ なぜダメなのか?

WordPressの内部ではこうなっています

  • 表示 → WP_Query
  • ページネーション → メインクエリ

別のデータを見ている

その結果

  • /page/2/ が存在しない扱い
  • 404エラーになる

解決方法(3ステップ)

今回の解決はこの3つです

① front-page.php → home.phpに変更

phpファイルをfront-page.php → home.phpにリネーム

WordPressの「投稿一覧ページ」として正しく動かす

② functions.phpでメインクエリを変更

これで通常投稿 → blog投稿に変更

③ メインループに変更

WP_QueryをやめてWordPress標準のループを使用

結果

/page/2/ が正常に表示されるようになりました!

なぜこれで解決するのか

❌ 修正前

表示 → WP_Query
ページネーション → メインクエリ

データがズレる

✅ 修正後

表示 → メインクエリ
ページネーション → メインクエリ

完全一致 → 正常動作

初心者向けまとめ

  • メインクエリ = WordPressが最初に用意するデータ
  • WP_Query = 自分で作る別データ
  • 一覧ページではメインクエリを使うのが基本

よくあるミス

  • WP_Queryで一覧ページを作る
  • pagedだけ設定して安心する
  • front-page.phpで無理やり実装する

今回のポイントまとめ

  • front-page.php → home.phpに変更
  • functions.phpでpost_typeを上書き
  • メインループに変更

まとめ

WordPressのトップページ(home.php)でカスタム投稿を表示する場合は、「メインクエリを使う」のが正解です。

一言

同じように /page/2/ で404になる方は、この方法で解決できる可能性が高いです。

Category

関連記事