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になってました。
お解決!

コメント