WordPressをPHP 8.0以上の環境にアップデートした際、
Warning: Undefined array key 0 in… というエラーが表示されることがあります。
当記事では、エラーが発生する原因と解決例を解説します。
エラーの概要
「Warning: Undefined array key 0 in」は、PHPで存在しない配列のキーにアクセスしようとしたときに表示されるPHPの警告文です。
以前までは配列に対して存在しないキーを指定しても、null (データなし)として処理されていました。
しかし、PHP 8.0以降から仕様が厳しくなり、警告として画面に表示されるようになりました。
エラーが起きる例
WordPressのテーマ内で、記事一覧から各記事のカテゴリーを取得する際、
下記のように記述するとエラーが起こります。
<?php $cat = get_the_category();
$cat = $cat[0]; ?>エラーが起きる原因
get_the_category() は、投稿に設定されているカテゴリーの情報を「配列」で返します。
しかし、カテゴリーが一つも設定されていないページでこのコードが実行されると、配列の中身が空(から)になります。
カテゴリーの中身が空であるのにも関わらず、 [0](1番目の要素)を取り出そうとしたため、エラーが起こります。
エラーの解決方法
解決するには、データが存在するかどうかを事前にチェックする条件分岐を追加します。
解決例
<?php
// カテゴリーのデータを取得
$cat = get_the_category();
if ( ! empty( $cat ) ) {
$cat = $cat[0];
}
?>コードの解説
empty( $cat )で、変数$catの中身が空かどうかを調べています。- 頭に
!をつけることで、「もし中身が空ではないなら」という条件になります。 - データがあるときだけ
$cat[0]を実行するため、エラーを回避できます。
まとめ
PHP 8.0以降にアップデートすると起こりやすいエラーなので、
配列のデータを扱う際は、データが存在しない場合の条件分岐を記述しておきましょう。

