WordPressデザインを使ったWP外ページが404になった話と対処法

WordPress

WordPress外の独立PHPページでwp-load.phpを読み込むと404エラーになる時の対処法

通常運用はWordpressで書くけど、

  • 一部のページは静的に運用したい(HTML直編集したい)
  • 独自PHP処理をWordPressに組み込まないけど、WordPress内に入ってるように見せたい

てこと、プログラマならあるあるじゃないですか。

そんなときは

<?php require('../wp-blog-header.php'); ?>

を最初に置いておいて、その後に処理を書けば良いって話だったんですわ。

でも、今日見たら404。

自分

しばらく見てなかったからなー…

その対処法。

表示もステータスも404

ChromeのDeveloperツール(F12)でネットワークみたら404になってた。

ステータスを上書きするだけなら

// WordPressが勝手に返した404ステータスを200(正常)に上書きする
status_header(200);

て貼っておけばステータス200(通常)になる。

でも『表示にぺーじがありません404』て出ちゃってるのよw
これはダメじゃんね。

自分

ステータスなんて確認してなかったから、もしかしたら、元々ずっと404状態だったかもしれん…

原因:WordPressがデータベースを見るから

wp-blog-header.phpを読み込んだら、WordPressが「現在のURLに対応する投稿(ページ)がデータベースにあるか」を探しに行く。
反映させるテンプレートファイルをどれにするかを選ぶためにだね。

当然、WordPressの外で作ったファイルなんてDBには登録されていないから、WordPress様が「そんなページはない!」と判断して、ステータスコード404を吐き出してしまうわけ。

解決策:貼り方を変えたらOK

調べたらwp_load.phpだけにしろって話になるらしい。
⇩参考にしたのはこちらの記事

wp-blog-header.phpをインクルードしたページが404エラーになった時の対処法 | 株式会社 エヴォワークス -EVOWORX-
例えばコーポレートサイトを制作する時、ニュースページはWordpressで運用、他のページは静的ページ(HTMLファイル)を直接編集しながら運用、みたいなケースはすごい多いと思います。その時は静的ページに「wp-blog-header.ph...

これからつくる人のために、フル例文を置いておきます。⇩

<?php
// 1. wp-load.phpを読み込んでWordPressの機能を有効化する
// パスは自分の環境に合わせて正確に指定すること
require_once('../wp-load.php'); 

// 2. WordPressの標準ヘッダー関数を呼び出す
get_header(); 
?>

外部ページです。

<?php 
// 3. 必要ならフッターも忘れずに呼び出す
get_footer(); 
?>

ちゃんとステータスも200になってました。
お解決!

コメント

タイトルとURLをコピーしました