WordPressで「Notice: Undefined index」エラーが出る原因と解決方法【PHP8対応】

WordPressの管理画面やサイト上に「Notice: Undefined index: ◯◯ in /wp-content/themes/~/functions.php on line ××」のようなエラーメッセージが表示されて驚いたことはありませんか?この記事では、この「Undefined index」エラーが表示される原因と、具体的な対処方法をわかりやすく解説します。

スポンサーリンク

「Notice: Undefined index」とは?

「Notice: Undefined index: ◯◯」は、PHPのプログラム内で存在しない配列のキー(添字)にアクセスしようとしたときに表示される注意メッセージです。

WordPressの場合、テーマやプラグインのfunctions.phpなどが、$_GET$_POST、各種オプション配列から値を取得する際に、その値が存在するかどうかを確認しないまま参照していることが主な原因です。値が存在しない状態で配列のキーを呼び出すと、PHPは処理自体は続行しつつも「そのキーは存在しませんよ」という注意(Notice)を表示します。

致命的なエラー(Fatal Error)とは異なり、Noticeはあくまで「注意」レベルのメッセージです。表示されていてもページの表示や投稿の保存自体ができなくなることは基本的にありません。

PHP8では「Warning: Undefined array key」に変わった

注意したいのは、PHPのバージョンによってこのメッセージの出方が変わる点です。PHP 7以前では「Notice: Undefined index」として表示されていましたが、PHP 8以降では「Warning: Undefined array key」というメッセージに変更されています。

表示名が変わっただけで、原因(存在しない配列キーへのアクセス)は同じです。レンタルサーバーのPHPバージョンをアップデートしたタイミングで、これまで見えていなかった「Notice: Undefined index」が「Warning: Undefined array key」として表示されるようになったというケースもよくあります。

「Notice: Undefined index」の解決方法

方法1. 使用中のテーマ・プラグインを最新版に更新する

このエラーは、テーマやプラグイン側のコードの書き方が原因で発生していることがほとんどです。多くの場合、開発元によってすでに修正版が公開されているため、まずは使用しているテーマ・プラグインを最新バージョンに更新してみましょう。それだけでメッセージが表示されなくなることも少なくありません。

方法2. functions.phpなどのコードを修正する

更新しても直らない場合や、自作・カスタマイズしたfunctions.phpが原因の場合は、エラーメッセージに表示されているファイルと行番号(例:「functions.php on line 241」)を確認し、該当箇所を修正します。

修正の基本は、配列のキーにアクセスする前にisset()関数でその値が存在するかどうかをチェックすることです。

例えば、次のようなコードがあるとします。

$update_level = $themes['update_level'];

このコードは、$themes配列にupdate_levelというキーが存在しない場合に「Undefined index」が発生します。isset()を使って次のように書き換えると、キーが存在しない場合でもエラーを出さずに処理できます。

$update_level = isset($themes['update_level']) ? $themes['update_level'] : '';

PHP 7以降であれば、null合体演算子「??」を使うことでさらに短く書くことも可能です。

$update_level = $themes['update_level'] ?? '';

テーマファイルを直接編集する場合は、編集前に必ずバックアップを取り、可能であれば子テーマ(チャイルドテーマ)を作成したうえで修正することをおすすめします。テーマ本体を直接書き換えると、次回のテーマ更新時に修正内容が上書きされて消えてしまいます。

方法3. 画面上への表示だけを抑える(応急処置)

すぐにコードを修正できない場合の応急処置として、PHPのエラー表示設定を変更し、NoticeやWarningレベルのメッセージを画面に表示しないようにする方法もあります。ただし、これはエラーそのものを解消するわけではなく、あくまで「見えなくする」だけの対処です。根本的な原因(コードの書き方)は残ったままになるため、可能な範囲で方法1・方法2による解決を優先しましょう。

まとめ

「Notice: Undefined index」(PHP8以降は「Warning: Undefined array key」)は、存在しない配列のキーにアクセスしようとしたときに表示される注意メッセージです。サイトの表示が完全に止まるような致命的なエラーではありませんが、放置せずに対処しておくのが安心です。

まずはテーマ・プラグインのアップデートを試し、それでも改善しない場合は、エラーメッセージに表示されたファイル・行番号をもとにisset()やnull合体演算子(??)でコードを修正しましょう。

このテーマの関連記事はこちら