ACF用户动态图片字段无法正常显示问题求助
问题:ACF用户图片字段仅返回ID,无法显示实际图片
我用Elementor Pro搭建用户仪表盘,通过ACF展示各类动态内容,其他字段都正常工作,但用户的动态图片字段只显示图片ID,不显示实际图片。
为文章添加自定义图片字段时,以下代码可以正常运行:
<?php $image = get_field($post_image); $pic = $image['sizes']['large']; ?> <p><?php echo $pic; ?></p> <?php var_dump($image);?>
但调用用户的图片字段时,两段代码都只返回图片ID,且文章和用户的ACF图片字段设置完全一致:
第一段代码:
<?php $user_id = get_current_user_id(); $user = get_user_by( 'id', $user_id); $userimg = get_field("$realtor_image",$user); if( $userimg ) { echo $userimg; } else { echo 'empty'; } ?>
第二段代码:
<?php $user_id = get_current_user_id(); $user = get_user_by( 'id', $user_id); $userimg = $user->realtor_image; ?> <p><?php echo $user->realtor_image; ?></p> <?php var_dump($userimg);?>
我已经尝试修改ACF图片字段的返回格式,但问题依然存在,希望得到帮助。
输出截图说明:页面上仅显示一串数字(图片ID),无图片内容。
图片字段设置截图说明:ACF图片字段设置为“返回图像对象”,与文章字段的设置一致。
解决方法
1. 修正get_field的用户参数格式
调用用户的ACF字段时,推荐将第二个参数指定为"user_{$user_id}"格式的字符串(而非直接传用户对象),避免兼容性问题:
<?php $user_id = get_current_user_id(); // 明确指定用户ID前缀 $userimg = get_field('realtor_image', "user_{$user_id}"); if( $userimg && is_array($userimg) ) { // 渲染large尺寸图片 echo '<img src="' . esc_url($userimg['sizes']['large']) . '" alt="用户图片">'; } else { echo 'empty'; } ?>
2. 手动通过ID获取图片URL
如果仍只返回图片ID,可使用WordPress原生函数wp_get_attachment_image_src转换为图片URL:
<?php $user_id = get_current_user_id(); $userimg_id = get_field('realtor_image', "user_{$user_id}"); if( $userimg_id ) { $image_data = wp_get_attachment_image_src($userimg_id, 'large'); if( $image_data ) { echo '<img src="' . esc_url($image_data[0]) . '" alt="用户图片">'; } } else { echo 'empty'; } ?>
3. 排查Elementor动态标签设置
若通过Elementor可视化调用字段,确保选择ACF图片字段而非通用“自定义字段”——通用自定义字段会直接返回原始ID值,而ACF图片标签会自动处理渲染逻辑。
4. 同步ACF字段缓存
进入WordPress后台的ACF设置 → 工具,点击“同步字段组”,确保用户字段的配置已生效,然后刷新仪表盘页面。
内容的提问来源于stack exchange,提问作者aknahin
相关产品推荐
相关产品推荐

