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

ACF Repeater字段图片在for循环中无法显示的修复方案

解决ACF Repeater字段中图片无法加载的问题

问题原因

ACF的图片字段默认返回格式是图像对象/数组,而非直接的URL,所以直接输出$e['ect_image']会显示Array,无法作为图片src使用。而非Repeater字段能正常显示,大概率是当时设置了返回格式为「URL」。

方案1:修改ACF字段返回格式(最简单)

  1. 进入WordPress后台的ACF字段组编辑页面,找到「Eye Condition Type」Repeater里的「ect_image」字段;
  2. 在字段设置的「返回格式」选项中,选择URL;
  3. 更新字段组后,前端直接使用$e['ect_image']就能拿到图片地址,示例代码:
    $ect_items = get_field('ect');
    foreach( $ect_items as $e ):
        echo '<img src="' . esc_url($e['ect_image']) . '" alt="">';
    endforeach;
    

方案2:保留原字段设置,提取数组中的URL(适合需要图片其他属性的场景)

如果需要用到图片的alt、尺寸等信息,不用改字段设置,直接从返回的数组中提取URL:

$ect_items = get_field('ect');
foreach( $ect_items as $e ):
    // 先判断图片是否存在,避免空数组报错
    if( !empty($e['ect_image']) ) {
        $image_url = $e['ect_image']['url'];
        $image_alt = $e['ect_image']['alt'] ?: '默认替代文本'; // 处理alt为空的情况
        echo '<img src="' . esc_url($image_url) . '" alt="' . esc_attr($image_alt) . '">';
    }
endforeach;

注意事项

  • 始终使用esc_url()和esc_attr()对输出内容做安全转义,避免XSS安全风险;
  • 如果用have_rows()循环Repeater,改用get_sub_field('ect_image')获取图片数组,逻辑和上述代码一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:55:15