ワードプレスのアップデート(PHP8以上)にした場合によくでるWarning: Undefined array keyを解消する方法について解説いたします。

Warning: Undefined array keyとは?

Warning: Undefined array keyは、ワードプレスを動かしているプログラミング言語であるPHP8以上にアップデートするとよく出る警告です。

ワードプレスの本体やプラグイン等のアップデートの為に、まずPHP8以上に切り替えると出てくる場合が多く、場合によっては全ページにこのWarningが表示されたりすることもあります。

こちらの警告を修正するには、可能な場合はプラグイン等をアップデートすることが最も簡単な解決方法です。(最新のバージョンでワーニングエラーが解消されている場合があるからです)

ただ、古いテーマやプラグインで、バージョンアップが止まってしまっている物などは手作業で該当のコード部分を修正する必要がございます。

Warning: Undefined array keyの修正方法

この警告は下記のような文字列になっているかと存じます。

Warning: Undefined array key "my_index" in some.php on line 11

これはsome.php の11行目でこの警告が発生しているという事になります。

上記の出力を手掛かりに、コードを見てみると下記のようなコードがあるかと存じます。

$my_index = $my_array["my_index"]

このコードは$my_arrayという配列のmy_indexという配列キー(配列の箱のようなもの)を指定していますが、my_indexキー自体が存在していないという意味になります。
PHP8以降(特に8.3等)で警告を出すようになった代表的な仕様変更となっています。

この為配列キーが存在すれば、この配列の該当のキーを使用するようなIF文を追加することでワーニングが解消されます。

修正例(issetで配列キーがあるかまず調べて代入します)

if( isset($my_array["my_index"])){
    $my_index = $my_array["my_index"];
}

ただ、この修正すると今度は別の警告が出る場合がございます。

例えば下記のような警告です Warning: Undefined variable $my_index
これは、 $my_indexをIF文でくるんでしまったことによって、条件に合致しない場合に、$my_indexが初期化されていない状態になるために出る警告です。

このような場合は下記のように初期値を設定すると、警告が解消される場合ががあります。

$my_index = ""; //変数の初期化
if( isset($my_array["my_index"])){
    $my_index = $my_array["my_index"];
}

このようンワーニングの解消はPHPのプログラミング知識をある程度必要とし、その前後のプログラミングとの整合性も取る必要があるため、一般的に難易度が高いこともございます。

WPドクターでは経験豊かな専門家がPHPのエラーやワーニングを修正代行いたします。
お気軽にご相談お送りください。

WordPress ワードプレスのPHPコーディングのご依頼・ご相談はWPドクターまでお気軽にお送りください