プラグインを使わずに、WordPressに機能を追加する場合、
大抵の場合、function.phpの編集が必要になります。
function.phpをテキストエディタで編集してアップロードしてエラーで画面真っ白💦となるより、
部分的に編集→追加をした方が、影響範囲を局所化できるため、
プラグインの「Code Snippets」を使っています。
ですが、先ほど、Snippetを作成して有効化したら、
「サイトに重大なエラーがありました。詳細については、サイト管理者のメール受信ボックスを確認してください。」
今回は、「Code Snippets」を使って、重大エラーが起きた時の復旧方法です。
バックアップの落とし穴
WordPressの編集をするとき、
特にfunction.phpの編集をする場合は、
必ずバックアップを取るようにしています。
普段使っているのは、「All-in-One WP Migration」というプラグイン。
事前にバックアップ対象を設定しておけば、
あとは、バックアップボタンを押すだけで、バックアップが作成され、ダウンロードすることができます。
まだ使ったことはないですが、リカバリも、「All-in-One WP Migration」のメニューからインポートを選び、
ファイルをアップロードするだけで、バックアップファイルを作成した時点の状態に戻すことが可能となっています。
重大エラー発生時の対処法
せっかく取ったバックアップが使えない💦
「サイトに重大なエラーがありました。詳細については、サイト管理者のメール受信ボックスを確認してください。」ってあるけど、メール来てない💦💦
でも、なんとか、管理画面が使えるように戻さないと💦💦💦
そんなときはデバッグモードに切り替えます。
デバッグモードへの切替手順
wp-config.phpファイルを書き換える必要があるため、サーバーにログインします。
①SCPで、サーバーにログインする。
②下記フォルダを開く
③wp-config.phpファイルのバックアップを取得する(コピーして、名前変更)
④wp-config.phpファイルをダウンロードする。
⑤ATOMなどのテキストエディタでwp-config.phpファイルを開く。
※メモ帳は使わないこと。
⑥以下記述を探す。
※日本語部分が文字化けしていても、英語部分が文字化けしていなければ、問題ありません。
define( ‘WP_DEBUG’, false );
⑦以下記述に変更して、保存する。
define( ‘WP_DEBUG’, true);
⑧wp-config.phpファイルをアップロードする。
⑨管理画面をリロードし、エラー詳細が表示されるか確認する。
Code Snippetsを修正しよう
WordPressがデバッグモードで表示されるようになったら、
次はCode Snippetsを直していきます。
Code Snippetsの修正手順
先程WordPressをデバッグモードに変更するために編集したwp-config.phpファイルを書き換えます。
①ATOMなどのテキストエディタでwp-config.phpファイルを開く。
②以下を追記して、保存する。
※日本語部分が文字化けしていても、英語部分が文字化けしていなければ、問題ありません。
define('CODE_SNIPPETS_SAFE_MODE', true);
③wp-config.phpファイルをアップロードする。
④Code Snippetsの画面を開き、正しく表示されるかを確認する。
⑤エラー原因のSnippetを削除する。
※まずは重大エラーが表示されなくなるようにしたいので、今回は削除を行っています。
通常モードに戻そう
重大エラーがなくなったら、必ずデバッグモードから、通常モードに戻します。
通常モードへの切替手順
①再度、ATOMなどのテキストエディタでwp-config.phpファイルを開く。
②以下記述を探す。
define( ‘WP_DEBUG’, true);
③以下記述に変更する。
※日本語部分が文字化けしていても、英語部分が文字化けしていなければ、問題ありません。
define( ‘WP_DEBUG’, false);
④以下部分の前に//を書いてコメントアウトし、保存する。
//define('CODE_SNIPPETS_SAFE_MODE', true);
⑤wp-config.phpファイルをアップロードする。
⑥すべての画面が正常に表示されているかを確認する。
まとめ
いかがでしたでしょうか?
バックアップを取っていても、使えなかったら意味ないですね。
本番環境で直接編集をしていると、エラーになったときは本当に怖いですね。
編集用の環境を別途作り、問題ないことを確認してから本番環境に適用するようにしましょう。