決戦の前夜、陣中に灯がともる。
出城もWATABOKORIでそろえる。方針は決まり、試作の兵器もできあがった。あとは本番を待つばかり――のはずだった。
「殿、念のため、もう一度だけ予行演習をば」
その「念のため」が、思わぬ落とし穴を次々と掘り当てることになる。
※ 時代劇風の語りは演出です。この回はすべてローカル検証(このPCの中)で、本番への変更は0件。数字・日付・結果は作業記録に基づきます。
試作品を見直したら、本番に持ち込めない点が2つあった
対象は、旧テーマで動いているuberとinvestorです。記事の本文・URL・SEO設定を守ったままWATABOKORIへ移すための道具(子テーマと互換プラグイン)を、本番に持ち込む前に予行演習で合格させておく、というのがこの回のテーマでした。
予行演習の準備として、前回の試作品を見直したところ、本番にそのまま持ち込むと困る点が2つ見つかりました。AIが自分で気づいて、作り直しています。
ひとつ目は、本体用のタグがサブドメインにも出てしまう点です。本体用の互換プラグインには、本体のGA4とAdSenseのIDが初期値として入っていました。これをサブドメインに入れると、本体のタグがそのサブドメインにも出てしまいます。前回のローカル検証ではIDを空にして試していたので、問題が表に出ていなかったんです。そこで、サブドメイン専用の互換プラグインに分けて、タグは出さないことにしました。
ふたつ目は、本番の設定ファイルを書き換える前提になっていた点です。特定ページを検索結果に載せない指定が、本番のwp-config.phpに定数を書く方式でした。これを、プラグインの中にサイト名とページの対応表を持たせる形に変え、本番の設定ファイルには触らないことにしました。
予行演習のやり方も、本番に寄せた
前回は、テーマやプラグインの状態をローカルで「差し替える」形で試していました。今回は、本番のデータベースのダンプ(MySQL 5.7、本番と同じ文字コード)を復元し、WordPress自身の更新処理で実際に更新する形に改めています。

uberとinvestorの結果は、こうでした(すべてローカル)。
- WordPressの更新とデータベースの更新:成功
- 記事・メタ情報・カテゴリーの内容の照合:変更なし(uber 16項目、investor 62項目)
- PHP 7.4/8.4/8.5:全ページ表示OK。FatalもWarningも0
- 本番と同じphp.ini設定での画面エラー:出ない
- 公開記事の本文の欠落:0(investorのトップ用ページの装飾見出し1か所のみ別扱い)
- PC・スマホ表示:横スクロール、画像切れ、JSエラー、生のショートコードのいずれも0。目次あり
全URLを比べたら、3つ欠けていた
ここからが、予行演習の本領です。「現行(PHP 7.4+旧テーマ)」と「移行後(PHP 8.5)」を全URLで比べたところ、次の3つが欠けていました。
| 欠けていたもの | 対策 |
|---|---|
記事のAMP用URL(/記事名/amp/)が、移行後は404になっていた | 通常の記事URLへ301転送する形に修正 |
| OGP(SNSで共有したときのカード表示用の情報)が消えていた | 互換プラグインで出力。旧テーマの代替画像と、ログイン名が見えていた投稿者情報は出力しない |
| investorのトップページで、動画つきの紹介ページが消えていた | 記事一覧の前に、同じ内容を表示する |
予行演習をせずに本番へ持ち込んでいたら、この3つは本番で初めて見つかっていたはずです。ここは、リハーサルの価値がそのまま数字に出た場面でした。
前回の検証条件にも、訂正があった
前回の報告では、gadgetサイトのPHP互換の検証を、本番と違う文字コード(utf8)で行っていました。本番と同じutf8mb4で検証し直し、本体・gadget・otokuの3サイトとも、PHP 8.5で合格しています。前回の記載は、この点を訂正しました。
戻せることの確認

11月3日に取ったバックアップは、改ざんチェック値(SHA-256)が8ファイルすべて一致しました。そこからuber(4,234ファイル)とinvestor(4,681ファイル)を取り出して戻したところ、ハッシュの不一致は0件。データベースから戻した内容も、移行前と一致しています。戻したサイトは、PHP 7.4で、旧WordPressと旧テーマのまま表示されました。失敗しても、ちゃんと元に戻れることが確認できたわけです。
chucosとstgの扱い
chucosは、公開されているのが初期記事だけで、実質的な下書きは1件。それも未完成の記事でした。念のため別の場所に退避し、サーバーパネルのアクセス制限で公開を止め、ファイルとデータベースは残す案にしました。stgは検証用の複製で、役目は終わっていますが、外からは見えない状態(Basic認証)なので、今回は触らないことにしています。
見落としが、ひとつ残っていた
予行演習の過程で、第三話の本番反映の見落としも見つかりました。本体サイト(www)のOGPが、11月2日の移行で消えたままになっていたんです。現在の本番にはOGPが0件で、旧テーマは出力していたものでした。第三話の本番反映では、この確認が漏れていました。SNSで共有したときのカード表示に影響します。今回の作業範囲外なので、別の工程として提案されています。
この回で解決したのは、uberとinvestorの移行の道具が予行演習に合格したことです。移行後に「変わる点」も明確になりました。サイドバーの旧テーマ専用ウィジェットは表示されなくなり、404ページと検索結果のタイトルがWordPress標準の表記になって、404はnoindexになります。許容範囲と判断されています。
この回の記録
- 作業日:2026年11月3日の午前。時刻の記録はなく、報告書の更新時刻から昼前(日本時間)と推定しています(概算)
- 環境:すべてローカル。本番への変更は0件
- 進捗:12マイルストーンのうち 8/12(M8 旧サイト用の試作・予行演習の合格が加わった)。WordPress最新版に到達したサイトは 3/7(変化なし)、PHPを最新にしたサイトは 0
- 残った課題:本体サイトのOGPの復旧(別工程)、Windows版PHPによる検証の限界、uber・investor・chucosの管理画面の実画面は未確認(未ログイン)、未暗号化のバックアップが2組このPCだけにある(検証環境は本番完了の7日後に削除、バックアップは30日後に暗号化するか削除するかを本人が選ぶ計画)
- PHP 8.5.12への切り替えは、uberとinvestorの本番移行が済み、PHP 7.4のまま24時間問題がないことが条件
- 原稿の執筆時点:2026年11月3日
第一章 AI時代・PHPの乱 第5話
戦果発表
第5話が終わった時点(この数字は固定です)
- 達成試作の設計の穴2件(本体タグの漏れ・設定ファイル書換え前提)を作り直し
- 達成全URL比較で欠落3件(AMP用URL・OGP・investorトップ動画)を発見・修正(ローカル)
- 達成gadgetの検証条件(文字コード)を訂正し再検証
- 達成復元リハーサル(SHA-256 8ファイル一致、uber/investor復元でハッシュ不一致0)
- 未解決本体wwwのOGP消失(11/2の移行で発生)別工程として提案
全12工程中の達成
66.7%
8/12 工程を達成
12工程の内訳を見る
- 達成 現状調査(本番変更なし)(本番は読み取りのみ)
- 達成 ローカルの復元・検証環境の構築(ローカル)
- 達成 WATABOKORIのローカル検証に合格(PHP 7.4〜8.5・SEO主要項目・AMP転送)(ローカル)
- 達成 本体をWordPress 7.1.4へ更新(本番)
- 達成 本体をWATABOKORIへ切替(本番)
- 達成 本体のGA4・AdSenseの本番確認(本番)
- 達成 旧サブドメインの方針決定と本人承認(WATABOKORI統一)(判断)
- 達成 旧サブドメイン用の試作・予行演習に合格(ローカル)
- これから chucosの公開停止(アクセス制限)(本番)
- これから uber・investorをWordPress 7.1.4+WATABOKORI簡易版へ移行(本番)
- これから PHP 8.5.12へ本番切替(本番)
- これから 切替後1週間のエラーログ監視(本番)
達成率は「全12工程のうち、達成した工程の数」を12で割ったものです。作業時間や難しさによる重みづけはしていません。上の戦果の項目は各話の出来事の記録で、工程の数とは別に数えています。
現在のプロジェクト全体(随時更新)
83.3%(10/12 工程)
2026-11-03 13:17 JST(本番実施記録の判定時点。原稿作成時点で確認できた最新の記録)
次回予告
準備は整った。いよいよ出城攻めの決行である。段階0から段階5まで、ひとつずつGOを確かめながらの慎重な進軍。ところが、戦が終わっても、総大将は勝ち鬨を上げなかった。
――第六話『出城攻め、決行――されど刀は納めず』
連載「AI時代・PHPの乱」