WordPressの「エラー: データベースに接続できません」画面をdb-error.phpでカスタマイズする

@kasumiiです。こんにちは。

WordPressを使っているサイトでたまにデータベース接続エラーが発生することがあります。その場合、「エラー: データベースに接続できません」という文章が一行だけ表示されてものすごく寂しい画面になってしまいます。

その画面をdb-error.phpファイルでカスタマイズしてみます。

データベースエラーが発生したときに表示される「db-error.php」ファイルを作り、以下のコードをコピーします。

<?php
// -----------------------------------
// データベースエラーページのカスタマイズ
// -----------------------------------
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Expires: Wed, 11 Jan 1984 05:00:00 GMT');
header('Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT');
header('Cache-Control: no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Content-Type: text/html; charset=utf-8');
header('Retry-After: 3600'); // サイトの復旧まで何秒くらいかかるか(1時間:3600秒)
// エラー発生時に自分にメールを送る場合
// メールアドレスを編集してコメントアウトをはずす
// mail("mail@example.com", "データベースエラー", "データベース接続エラーが発生しました。", "From: Db Error Watching");
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>データベースエラー</title>
<style>
body{
	background: #f5f5f5;
	text-align: center;
}
#error-page {
	width: 600px;
	margin: 80px auto;
	padding: 20px;
	color: #333;
	background: #fff;
	border-radius: 5px;
	border: 1px solid #ddd;
}
h1{
	font-size: 20px;
	margin-bottom: 30px;
}
p{
	font-size: 14px;
	line-height: 1.5;
}
</style>
</head>
<body>
<div id="error-page">
<h1>データベースにアクセスできませんでした</h1>
<p>しばらくしてから再訪問してみてください。</p>
<p>お手数をおかけしますがよろしくお願いいたします。</p>
</div>
</body>
</html>

表示される文言やスタイルはお好みで編集してください。

コメントアウトをはずせばエラー画面が表示されたときに自分宛てにメールを送ることができますが、アクセスが多いサイトだと大量に送られてしまうので注意。

【参考】10 Very Useful WordPress Hacks | Top Design Magazine
【参考】WordPress のデータベースエラーページをカスタマイズ | dogmap.jp

Googleのブログによると、何らかの理由があってサイトに一時的にアクセスできない場合は、以下のように指定することをおすすめしているようです。

HTTPステータスコードとして503(Service Unavailable)を返す

Retry-Afterヘッダーで、あらかじめ分かっているダウンタイムの時間やサイトの復旧日時について指定する

【参考】Google ウェブマスター向け公式ブログ: サイトのダウン タイムへの対処の仕方

GooglebotがRetry-Afterヘッダーの情報を参考にして再クロールのタイミングを決める場合があるそうなので、指定しておきます。

さきほど作成したdb-error.phpをwp-contentディレクトリ直下に置きます。

WordPress管理画面の「プラグイン」→「ドロップイン」のところに、db-error.phpが表示されていれば設置OKです。

実際に表示を確認したいときは、http://(自分のブログのWordPress設置ディレクトリ)/wp-content/db-error.php にアクセス。

データベースエラーが出てみないとなかなか気付きにくいページですが、デフォルトのエラー画面が不親切なので時間があればカスタマイズしておきたいところですね!