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になる方は、この方法で解決できる可能性が高いです。