functions.phpを編集したらサイトが真っ白になったときの復旧方法
- テーマの functions.php を編集後、画面が真っ白になって管理画面にも入れない
- syntax error / Fatal error が出ているが、どこから直せばいいか分からない
- 自力で復旧できるか・外注すべきかの判断基準と、復旧の全体像を知りたい
WordPressレベル別 対応難易度
赤:外注推奨 オレンジ:条件付き自力可 緑:自力対応可
functions.phpで真っ白になったときの全体像と対応方針
原因の多くは記述ミス(カンマ/セミコロン/波カッコ)やPHPバージョン非対応、他プラグインとの衝突です。
基本は「画面復帰 → 原因の切り分け → 恒久対策」の順で修正していきます。
まずはFTP/SFTPやホスティングのファイルマネージャーで安全に元に戻せる状態を作り、管理画面に復帰してから落ち着いて見直しましょう。
functions.phpでサイトが真っ白になったとき ~WordPressレベルごとのおすすめ対応
まずは「これ以上悪化させない」
functions.phpはテーマの中枢です。1文字の誤記でも画面が真っ白になったり500エラーになったりします。さらに焦って触ると、子テーマでなく親テーマを直接編集→アップデートで変更が消える…という二次被害も起きたりします。
赤レベルの方は、無理に修正しようとするのではなく、復旧に必要な情報の整理に注力し、外注することをおすすめします。
- いつ・どのファイルを編集したか(テーマ名/パス)
- 表示中のエラー文や現象(真っ白、500、Critical Error 等)のスクショ
- ホスティング情報(サーバー会社、プラン、PHPバージョン)
この3点をそろえて外注すれば、原因の当たりがつけやすく、短時間で復旧しやすいです。無理に自己流で直そうとすると、.htaccessやwp-config.phpまで触って症状をこじらせることもあるので要注意です。
編集を元に戻してから原因を切り分け
画面が真っ白になっていては管理画面にも入れない(=テーマのPHPが致命的エラー)ので、FTP/SFTPまたはサーバーのファイルマネージャーを使って修正していきます。流れは次のとおりです。
- 1) 編集前に戻す:バックアップがあればファイルの差し戻し。なければ、直近で加えた追記部分を一時コメントアウト、または削除して復帰を目指します。
- 2) 子テーマ運用か確認:もし親テーマ直編集なら、復旧後に子テーマへロジックを移す前提で対応していきます。
- 3) リカバリーモード:一部環境ではエラーメールの「リカバリーモード」リンクからログイン→問題のテーマ/プラグインを一時停止できます。
- 4) 衝突切り分け:復帰後に最近入れたプラグインを停止、デフォルトテーマ(Twenty Twenty系)への切り替えで再現を確認します。
- 5) ログ確認:エラーログ(ホスティングのエラーログ機能など)で関数名・ファイルパス・行番号を特定し、編集点と照合してください。
ポイントは「真っ白な画面を表示できるように戻してから調査」するということです。
編集を重ねるほど原因が複雑化します。復旧できない、もしくはPHP 7→8系での非推奨関数などバージョン絡みの疑いを感じたら、早めに外注へ切り替えるのも手です。
安全策→再現→恒久対策の三段階
緑レベルの方は、最初にバックアップ(DB/ファイル)と検証用ステージングを確保し、ロールバック手段を用意してから触ります。代表的な観点は以下。
- A. 画面復帰:直近編集の差し戻し、テーマの一時切り替え、必要なら一時的に functions.php の該当フックを切り離して最小構成で起動確認。
- B. 再現性の確保:ステージング環境で同じPHPバージョン/拡張を再現。メモリ制限/実行時間、OPcache、マルチサイト有無も確認。
- C. 原因特定:エラーログから未定義関数/未定義変数/名前空間/戻り値型の不整合、条件分岐の順序、フックの実行タイミング、依存プラグインの読み込み順を精査。
- D. 恒久対策:子テーマ運用、ガード節(存在確認/is_admin/REST判定)、バージョン分岐、PSR準拠の命名やautoload整理、将来の更新耐性を確保。
仕上げにHealth CheckでモジュールやREST API/ループバックを確認し、権限(644/755)や所有者を見直し。編集はGitで管理し、レビュー→デプロイの流れを固定化すると再発を防げます。
functions.php改修を外注する場合のポイント
「今日中に復旧したい」「顧客サイトで止められない」という状況では、専門家に任せるのが結果的に最短です。費用・流れ・準備物を押さえておきましょう。
| 項目 | ポイント |
|---|---|
| 費用の目安 |
・編集差し戻し+軽微な調整:10,000~20,000円 ・衝突調査+恒久対策(子テーマ化/互換対応):30,000~80,000円 ・緊急即応(夜間/当日内):+20~50%の特急加算が一般的 |
| 依頼の流れ |
1. 状況共有(エラー画面/いつ何を編集したか/サーバー情報) 2. 概算見積→合意 3. バックアップ取得のうえ復旧作業→原因説明→再発防止策の提案 |
| 準備しておくと便利 |
・サーバー管理画面/FTP(SFTP)の接続情報 ・使用テーマ(親子の関係)と直近の編集内容メモ ・ホスティングのエラーログの出し方(見つからなければURLだけでも) ・サイト運用上の制約(停止できない時間帯、キャッシュ/CDN有無 など) |
functions.php編集で真っ白な画面になったときのよくある質問
管理画面に入れないとき、最短の復旧手順は?
FTP/SFTPまたはサーバーのファイルマネージャーでテーマフォルダを開き、直前に編集したfunctions.phpの変更を元に戻すか、一時的にファイル名を変更(functions.php → functions-temp.php)して致命的エラーを回避します。復旧後に原因の調査と修正の対応を行います。
バックアップがない/何を直したか覚えていない場合は?
編集箇所が不明な場合は、まず「functions.phpを一時的に避難」してサイトを表示できる状態に戻します。FTP/SFTPでテーマフォルダを開き、functions.php を一度リネーム(例:_functions.php)してみてください。これで白画面が解消すれば、functions.php内にエラーがあります。
その後、元のファイルをローカル(PC)にダウンロードし、テキストエディタで構文チェック(カッコ・セミコロン・PHPの閉じタグなど)を行いましょう。
どうしても特定できないときは、サーバーのエラーログを確認して「行番号」や「関数名」を手掛かりにするか、早めに外注へ切り替えるのが安全です。
子テーマではなく親テーマを直接編集してしまった…どうする?
画面が真っ白な状態で焦っていては余計悪化しかねませんので、まずは画面復帰を最優先しましょう(バックアップから戻す/一時無効化)。
そして復旧後に子テーマを作成し、改修した処理を子テーマ側に移設します。
親テーマ直編集はアップデートで上書きされるため、再発の原因になりますので注意しましょう。
リカバリーモードのメールが届かない/リンクが見つからない
環境によってはリカバリーモードが動作しないことがあります。その場合は手動復旧(FTPやファイルマネージャーでfunctions.phpの変更を戻す/問題のプラグインを一時的にリネーム 等)でログイン可能な状態にしてから、管理画面で再度無効化・調整を行ってください。
PHP8系に上げたらFatal errorやDeprecatedが出る
非推奨関数や戻り値の型宣言の不整合が原因のことがあります。エラーログの関数名と行番号を手掛かりに、条件分岐の順序やフックの実行タイミング、依存プラグインの読み込み順も含めて見直してください。互換性のないコードはバージョン分岐や代替関数で対応します。
どこまで自力でやるべき?外注の判断基準は?
「変更点が特定できない」「FTP操作に不安がある」「業務やクライアントサイトで停止時間を最小化したい」なら外注が安全です。状況(いつ/どのファイルを編集・エラー画面のスクショ・サーバーとPHPバージョン)を揃えて依頼すると短時間で復旧しやすくなります。
再発を防ぐためのベストプラクティスは?
子テーマ運用・ステージング環境での検証・Gitによる変更履歴管理・レビュー(ダブルチェック)を固定化します。Health CheckでREST APIとループバック、権限(644/755)や所有者も確認しておくと安心です。
functions.phpの変更で画面が真っ白になったときは、一旦画面を復帰させてから原因を切り分けるのが最短ルートです。編集前への差し戻し、衝突確認、ログでの特定という王道を踏みましょう。
赤は無理せず外注、オレンジは差し戻しと基本の切り分けまで、緑は恒久対策まで一気通貫が目安です。
恒久対策としては、子テーマ運用・ステージング・Git管理・レビュー体制の4点を整えると再発率が下がります。迷ったら早めに相談することをおすすめします。

