CONTENTS

「ブログの2ページ目が見つかりません」WordPress固定ページあるあるをfunctions.php 1行で解決した事例

「ブログの2ページ目が見つかりません」WordPress固定ページあるあるをfunctions.php 1行で解決した事例

「ブログの2ページ目以降が、ページが見つかりませんでしたって出ちゃうんです」

先日コーディングをさせていただいたサイトのご担当者様から、こんなご連絡をいただきました。

確認すると、たしかに /blog/page/2/ を開くと「404 Not Found」

これ、WordPressで「固定ページにブログ一覧を表示」している構成だと、けっこうあるあるな現象なんですよね。
仕様を知らないと「設定どこ?」って一瞬迷うやつ。逆に知っていれば、functions.php に1行足して数分で直ります。

  • 何が原因なのか
  • どう直すのか(コード付きでご案内)
  • なぜ直すと動くのか
  • カテゴリーアーカイブには影響しないのか

今まさに同じ状況で困っている方の参考になれば嬉しいです。

目次

ブログの2ページ目以降が「ページが見つかりませんでした」とのご相談

ご相談内容を整理するとこんな感じでした。

  • 対象サイト
    注文住宅事業者様のWordPressサイト
  • 現象
    /blog/ トップは正常表示、でも /blog/page/2/ 以降が全部404
  • 構成
    固定ページ「ブログ」にテンプレートで投稿一覧を表示
  • カテゴリーアーカイブ(/blog/housing/page/2/ 等)は正常に動いている
こんた

「ブログを更新するたびに記事が増えていくのに、2ページ目に進めない」というのは、読者にとって地味にストレスですよね。
せっかく書いた過去記事に到達できない=資産化されないという意味でも、放置はおすすめできません!

原因は、WordPressコアが固定ページの paged ルートを自動生成しない仕様

調べてみたら、これはWordPressコアの仕様でした。

WordPressは、

  • 投稿アーカイブ/category/xxx//tag/xxx//author/xxx/ など)→ paged ルート(/page/N/)を自動生成する
  • 固定ページ/about//blog/ など) → paged ルートを自動生成しない

つまり、固定ページに投稿一覧を出力するテンプレートを当てていても、/blog/page/2/ というURL自体をWPが認識してくれないんですよね。

カテゴリーアーカイブ(/blog/housing/page/2/)が正常に動いていたのは、こちらは投稿アーカイブ側のルートで処理されていたから。
同じ /blog/ から始まっているので、ぱっと見「カテゴリーは動くのに固定ページは動かない、なんで?」と混乱するパターンです。

パーマリンク設定の「カテゴリーベース=blog」の影響でもなく、SWELL等のテーマ依存でもなく、WordPress本体の仕様なので、設定画面をいくら探しても出てきません

functions.php に add_rewrite_rule を1行追加で解決

子テーマの functions.php 末尾に、以下のリライトルールを追加します。

コード(最小構成)

add_action( 'init', function() {
    add_rewrite_rule(
        '^blog/page/([0-9]+)/?$',
        'index.php?pagename=blog&paged=$matches[1]',
        'top'
    );
} );

やっていることをご案内すると、

  1. ^blog/page/([0-9]+)/?$/blog/page/2//blog/page/3/ …というURLパターンを捕捉
  2. pagename=blog&paged=2 のクエリに変換してWordPressに渡す
  3. 'top' で他のリライトルールより優先(カテゴリーアーカイブ側のルートを邪魔しない)

これだけです。テンプレートファイルの修正は不要、プラグイン追加も不要。

反映の手順

  1. functions.php を更新してアップロード
  2. WordPress管理画面の「設定 → パーマリンク設定」を開く
  3. 何も変更せずに「変更を保存」ボタンを押す

3番目の「保存ボタンを押すだけ」が大切です。

これでリライトルールが再生成されて、追加したルールが有効になります。コード変更だけだと反映されないので、ここを忘れると「直したのに直ってない!」になります。

全URLで200を確認・検証

修正後、以下を実機で確認しました。

  1. /blog/page/2//blog/page/16/(最終ページまで全て)→ 200 OK
  2. title に「ページ番号」が正しく付与
  3. body class に paged paged-2 等が付与(CSSで2ページ目以降の装飾も使える)
  4. カテゴリーアーカイブ(/blog/housing/page/2/ 等)→ 影響なし・正常
  5. トップ(/)、固定ページ(/works/)等 → 影響なし・正常

カテゴリーアーカイブが壊れていないか、というのが今回の最大の懸念ポイントでした。
'top' で優先したぶん、他のルートを潰してしまう可能性もゼロではないので。

実機検証で「他に何も影響していない」を確認できたところで、ご担当者様に完了報告です。

「仕様を知っているか」が現場対応スピードを決める

今回の対応、原因特定から修正完了まで1時間かかっていません

でも、この仕様を知らないまま「設定画面のどこかに切り替えがあるはず」と探し始めたら、半日溶けてもおかしくない案件です。

WordPressって、「便利な仕様」と「便利すぎて固定ページには適用されない仕様」が混在していて、地味な落とし穴がけっこうあります。固定ページに投稿一覧を当てる構成は実は珍しくないので、同じ罠にハマっている方、けっこういるんじゃないかなと思います。

「仕様を知っているかどうか」で詰まる時間がぜんぜん違う。
だからこそ、こうやって事例として残しておくことに意味があるんですよね。

ちゃんと届くようにする。これが私の軸なので、現場で見つけた小さな知見も、同じところで困っている方に届けばと思って公開しました。

診断などもお気軽にご相談ください

今回の症状、心当たりある方は一度ご自身のサイトの /blog/page/2/(または /news/page/2/ など、固定ページに投稿一覧を載せているURL)を開いて、表示されるか確認してみてくださいね。

以下のような方は、お気軽にご相談ください!

  • 固定ページに投稿一覧を載せている構成で、ページ送りが効かない
  • functions.php を触るのが不安・触り方がわからない
  • WordPressの「仕様の落とし穴」全般、相談できる人が欲しい
  • 月々の保守の中で、こういう小さな不具合をサクッと直してほしい

💬 WordPressの不具合対応・保守、ご相談はお気軽に

こんたホームページ製作所では、不具合対応の単発相談から、月額保守でのご対応まで、各種承っております。「これ、自分で触るの怖い」「業者に頼むほどでもない気がする」という規模感のお困りごとも、まずはサクッとご相談ください。

▶︎ ホームページ保健室で単発相談する
▶︎ 月額保守サービス(運用プラン)を見る
▶︎ お問い合わせはこちら

この記事がよかったらと思ったらぜひ♪
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

埼玉県川口市で、自営業や起業家のホームページ制作を行っいます。
Web制作会社に7年務めたのち独立。Web制作歴12年、2500件以上のサイト制作に携わり、WordPressサイトを得意とし「作って終わり」にしない、結果が出るサイトであることを大切にしてます。「10人いれば10通りの最適なサイトがある」という信念のもと、型にハマったサイトづくりではなく、マーケティングから考えた、その人のビジネスにとって一番最適なサイトをご提案。技術面で不安のあるWebデザイナーのシステム面のサポートも行っております。

目次