PHP 8.1.26升级后WordPress主题函数文件出现数组偏移访问警告
解决PHP 8.1下WordPress主题函数的数组偏移警告问题
问题原因
PHP 8.0及以上版本对类型检查更严格,wp_get_attachment_image_src() 在找不到对应图片资源时会返回布尔值 false,而原代码直接尝试访问布尔值的数组偏移 [0],这就触发了警告。
修改后的函数代码
function mom_post_image($size = 'thumbnail', $id = ''){ global $post; if ($id == '') { $id = $post->ID; } $image = ''; // 获取文章缩略图 $image_id = get_post_thumbnail_id($id); $image = wp_get_attachment_image_src($image_id, $size); // 新增判断:仅当返回值为数组时才提取索引元素 if (is_array($image)) { $image = $image[0]; } else { $image = ''; } if ($image) { return $image; } // 如果仍无图片,获取文章内第一张图片 if (mom_option('post_first_image') == 1) { if ($first_image = mom_get_first_image($id, $size)) { return $first_image; } } // 使用默认文章图片 if ($default_img_id = mom_option('default_post_image', 'id')) { $image = wp_get_attachment_image_src($default_img_id, $size); // 同样新增类型判断 if (is_array($image)) { $image = $image[0]; if ($image) { return $image; } } } }
关键修改说明
- 缩略图获取部分:在提取
$image[0]前,用is_array($image)判断返回值是否为有效数组,避免直接访问布尔值的偏移量。 - 默认图片获取部分:同样增加数组类型判断,同时优化了变量赋值逻辑,减少重复调用函数。
- 文章首图部分:将两次调用
mom_get_first_image合并为一次,提升代码效率。
这些修改既解决了PHP 8.1的类型警告,同时保持了原函数的所有功能逻辑。
内容的提问来源于stack exchange,提问作者fast
相关产品推荐
相关产品推荐

