WordPress Snippet

ワードプレスをカスタマイズしよう

致命的エラー回復モード

投稿日: by

WordPress5.2で、Fatal Error Recovery Modeという機能が追加されました。

テーマやプラグイン等でPHPエラーが発生して、サイトが正常に表示できなくなった場合に、従来は、「真っ白」な画面で表示されて、コードを修正しないと表示できなくなるという問題を解決し

管理画面から、エラーが発生したテーマやプラグインを停止させたり、他のテーマなどに切り替えることができるようになりました。

この機能がどのように動作するのかを見ていきたいと思います。

必要な設定

wp-config.php

define('WP_DEBUG_DISPLAY',false);

この定数は、サイトにエラーメッセージを表示しないように設定します。この設定が行われていない場合、エラーメッセージそのもの表示されてしまうので、回復モードのメッセージが正しく表示されるように、設定を行います。
設定は以上です。

サイトにエラーが発生した場合どうなるのか

日本語

サイトに技術的な問題が発生しています。

サイトで技術的な問題が発生しています。サイト管理者のメールを確認して指示に従ってください。

英語版の場合

The site is experiencing technical difficulties.

The site is experiencing technical difficulties. Please check your site admin email inbox for instructions.

というメッセージが表示され、管理者メールアドレスに、復旧用アドレスが記載されたメールが届きますので、そこから管理画面に入ることができます。

また、発生しているエラーも送信されます。

管理画面にログインすると

といった表示が行われるので、変更を行ったらページ右上の、「リカバリーモードの終了」を必ずクリックします。

以上でめでたく修復と行けば素晴らしいのですが、少し物足りない点もありますので、追記します。

カスタムエラーメッセージを作りましょう

wp-content ディレクトリに、php-error.phpという名前のファイルを作成します。(このファイルはドロップインと呼ばれています。)

HTMLファイルは、ご自身でかっこいいのを作ってください。

<!doctype html>
<html lang="ja">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<title>Theme Raindrops - hello world</title>
		<meta name="viewport" content="width=device-width, initial-scale=1" id="blocktype-viewport">
		<meta name="apple-mobile-web-app-capable" content="yes">
		<style>

		</style>
	</head>
	<body>
		<header>
			<h2>只今、当サイトで障害が発生しています。</h2>	
		</header>
		<div>
			<p>メンテナンスを急ぎますので、しばらくお待ちください</p>
		</div>
		<footer>
			<address>https:example.com</address>
		</footer>
	</body>
</html>

テーマ制作などを行っている人は、エラーの度にメールが来るのはちょっと、、、

wp-config.php に定数を追加します。

define('WP_DISABLE_FATAL_ERROR_HANDLER', true);

その他、リカバリーモード関連関数。

Fatal Error Recovery Mode in 5.2 – Make WordPress Core