2026年5月20日

2026年5月20日

PHPのWarningを解決する方法【WordPressエラーメッセージ対処】

はじめに

WordPressのページの上部にWarning: xxxNotice: 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()?? 演算子・ゼロ除算チェックでコードを修正します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ