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

ACF插件报错:Uncaught TypeError 无法访问字符串偏移量问题

排查解决ACF的Uncaught TypeError错误

错误本质

这个Uncaught TypeError: Cannot access offset of type string on string错误,说白了就是你把字符串当成数组来用了——具体来说,$field变量根本不是ACF返回的合法字段对象数组,而是个字符串(甚至可能是false),你却硬要取$field['name'],自然报错。

分步排查修复

1. 先确认get_field_object的返回值

直接在代码里加一行打印,看看你拿到的$field到底是什么:

var_dump(get_field_object('name'));
  • 如果输出是string(xxx) "xxx"或者bool(false):说明你传入的字段名不对,或者这个字段根本没在当前上下文(比如当前文章/页面)生效。
    • 注意:ACF的get_field_object要传字段的内部名称,不是后台显示的友好名称。比如你后台字段显示名是“产品价格”,但字段名可能是product_price,别搞混了。

2. 检查acf_get_value的调用方式

错误出在acf_get_value函数的$field['name'],说明你调用这个函数时,传入的$field参数不是合法的字段对象数组。

  • 错误示例:直接传字段名字符串
    // 错!第二个参数要传字段对象数组,不是字符串
    $value = acf_get_value($post_id, 'your_field_name');
    
  • 正确写法:先拿到合法的字段对象,再传入
    $field = get_field_object('your_field_name');
    if( $field ){ // 先判断字段对象是否存在
        $value = acf_get_value($post_id, $field);
    }
    

3. 检查字段组的配置

如果get_field_object返回false,大概率是字段组没配置对:

  • 去ACF后台看字段组的「位置」设置,是不是和当前编辑的内容类型(比如文章、页面、自定义帖子类型)匹配。
  • 如果是用代码注册的字段(比如在functions.php里用acf_add_local_field_group),检查注册代码里的字段name有没有拼写错误,字段组的位置规则是否正确。

4. 应急防错处理

不想大改代码的话,在使用$field['name']之前加个判断,避免报错:

$field = get_field_object('name');
if( is_array($field) && isset($field['name']) ){
    // 这里安全使用$field['name']
} else {
    // 字段不存在的处理逻辑,比如打日志
    error_log('ACF字段不存在:name');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:05:19