2026年5月20日
2026年5月20日
PHPのWarningを解決する方法【WordPressエラーメッセージ対処】
はじめに
WordPressのページの上部にWarning: xxxやNotice: xxxといったPHPメッセージが表示される場合、サイトの機能は動いていることが多いですが、ユーザーに見えてしまうため修正が必要です。本番環境ではエラー表示をOFFにしつつ、根本原因も修正するのが理想的な対処法です。
WarningとNoticeの違い
| 種別 | 意味 | 表示抑制可否 | 処理続行 |
|------|------|------------|---------|
| Warning | 潜在的な問題 | 可能 | 続行 |
| Notice | 注意事項 | 可能 | 続行 |
| Deprecated | 非推奨の使用 | 可能 | 続行 |
WarningとNoticeはFatal errorと異なり、処理は続行します。
よく見るWarning・Noticeと対処法
ケース1:Undefined variable(未定義変数)
// ❌ Noticeが出るコード
echo $username; // $usernameが定義されていない
Warning: Undefined variable $username in ...
// ✅ 対処1:isset()で確認してから使う
if (isset($username)) {
echo $username;
}
// ✅ 対処2:デフォルト値を使う(PHP8.0以降)
echo $username ?? 'デフォルト値';
ケース2:Undefined index(未定義配列キー)
// ❌ Notice/Warningが出るコード
echo $_POST['email']; // emailが送信されていない場合
// ✅ 対処
echo $_POST['email'] ?? '';
// または
echo isset($_POST['email']) ? $_POST['email'] : '';
ケース3:Division by zero(ゼロ除算)
// ❌ Warningが出るコード
$result = $total / $count; // $countが0の場合
// ✅ 対処
$result = ($count > 0) ? $total / $count : 0;
ケース4:Deprecated(非推奨関数)
Deprecated: Function create_function() is deprecated in ...
PHP 8.0以降で削除された関数を使っているプラグイン/テーマで発生します:
- 対処:プラグイン/テーマをアップデートするか、モダンな書き方に変更
- 今すぐ直せない場合は本番環境でNoticeを非表示に
本番環境でのエラー表示をOFFにする
wp-config.phpで設定
// 本番環境推奨設定
define('WP_DEBUG', false); // デバッグOFF
// または
define('WP_DEBUG', true); // デバッグON
define('WP_DEBUG_DISPLAY', false); // ブラウザ表示OFF
define('WP_DEBUG_LOG', true); // ファイルに記録
.htaccessで設定(Apache)
# .htaccessに追加
php_flag display_errors Off
php_flag log_errors On
php_value error_log /path/to/error.log
エラーレベルを指定して抑制
// Notice・Warningを非表示(エラーハンドリング)
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
// または functions.phpで設定(非推奨・根本解決ではない)
@ini_set('display_errors', '0');
注意: エラー抑制(@演算子)はデバッグを困難にするため、コード修正が推奨されます。
プラグイン起因のWarningを素早く特定する方法
// wp-config.phpで詳細ログを有効化
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
// /wp-content/debug.logのWarningを確認
// ファイル名でどのプラグインか特定
特定のプラグインのWarningは、そのプラグインをアップデートするか、開発者に報告します。
まとめ
PHPのWarning・Noticeは本番環境でWP_DEBUG_DISPLAY falseに設定してブラウザへの表示を止め、WP_DEBUG_LOG trueでファイルに記録して後から確認します。根本対処としてはisset()・?? 演算子・ゼロ除算チェックでコードを修正します。
関連記事: