You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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; }
        }
    }
}

关键修改说明

  1. 缩略图获取部分:在提取 $image[0] 前,用 is_array($image) 判断返回值是否为有效数组,避免直接访问布尔值的偏移量。
  2. 默认图片获取部分:同样增加数组类型判断,同时优化了变量赋值逻辑,减少重复调用函数。
  3. 文章首图部分:将两次调用 mom_get_first_image 合并为一次,提升代码效率。

这些修改既解决了PHP 8.1的类型警告,同时保持了原函数的所有功能逻辑。

内容的提问来源于stack exchange,提问作者fast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:05:12