エラーメッセージ全文
Notice: Trying to access array offset on value of type bool in ファイルパス/ファイル名 on line 行目
エラー該当コード
$attachment_id = SCF::get_term_meta( $term_id, $taxonomy, $field_name );
$image_info = wp_get_attachment_image_src( $attachment_id, $size );
$image_url = $image_info[0];
上記はSmart Custom Fieldsプラグインから画像の情報を取得し、その画像のURLを取得するソースコードです。
実際の案件ではSmart Custom Fieldsプラグインで商品カテゴリーに登録した画像をforeachで取り出すために使用しています。
エラーメッセージの意味
PHPでarray
(配列型)の要素にアクセスしようとした際に、配列ではなくbool
(ブール型)の値にアクセスしようとしていることを示しています。
NoticeエラーなのでPHPプログラムの実行は停止されません。
エラーの原因
Smart Custom Fieldで画像を登録していない商品カテゴリーがある場合に$attachment_id
が空になります。
そうなると$image_info
がarray
型ではなくbool
型になってしまうため、エラーが発生します。
エラーを解決するには
$attachment_id
が空でないことを確認してから$image_info
を出力すれば良いです。
したがって、ソースコードを下記に変更します。
$attachment_id = SCF::get_term_meta( $term_id, $taxonomy, $field_name );
if($attachment_id) {
$image_info = wp_get_attachment_image_src( $attachment_id, $size );
$image_url = $image_info[0];
}
まとめ
今回はNotice: Trying to access array offset on value of type boolエラーの発生原因と対処した方法について記事にしました。
Noticeエラーはデバッグモードにしなければ表示されませんが、無視せず1つずつ対処していくことによって、コードの品質やメンテナンス性を上げていきたいと思います。