ACF嵌套Repeater取值求助:无法获取Group内部Repeater字段值
解决ACF嵌套Repeater(含Group字段)的字段获取问题
你的代码存在两个关键问题导致facts字段无法输出:
- 语法错误:
$info = get_sub_field('info);缺少闭合单引号,应修正为$info = get_sub_field('info'); - 逻辑错误:把Group类型的
info字段当作Repeater字段用have_rows循环,Group字段是一次性返回所有子字段的集合,不需要也不能这样循环。
以下是两种修正后的可行代码:
方式一:沿用ACF的have_rows循环风格
<div> <?php while( have_rows('partner')): the_row(); // 获取info组的所有字段 $info = get_sub_field('info'); // 输出info组内的其他字段(示例) if ($info['logo']) { echo wp_get_attachment_image($info['logo'], 'medium'); } echo '<h3>' . $info['headline'] . '</h3>'; echo '<p>' . $info['subline'] . '</p>'; echo '<div>' . $info['description'] . '</div>'; // 循环输出facts字段 if (have_rows('facts', 'info')): while (have_rows('facts', 'info')): the_row(); $fact = get_sub_field('fact'); echo '<li>' . $fact . '</li>'; endwhile; endif; endwhile; ?> </div>
方式二:直接遍历Group字段的数组(更简洁)
<div> <?php while( have_rows('partner')): the_row(); // 获取info组的所有字段 $info = get_sub_field('info'); // 输出info组内的其他字段(示例) if ($info['logo']) { echo wp_get_attachment_image($info['logo'], 'medium'); } echo '<h3>' . $info['headline'] . '</h3>'; echo '<p>' . $info['subline'] . '</p>'; echo '<div>' . $info['description'] . '</div>'; // 直接遍历facts数组输出 if (isset($info['facts']) && is_array($info['facts'])) { foreach ($info['facts'] as $fact_item) { echo '<li>' . $fact_item['fact'] . '</li>'; } } endwhile; ?> </div>
两种方式都能正确输出facts里的fact字段,你可以根据自己的习惯选择。
内容的提问来源于stack exchange,提问作者marlxnw
相关产品推荐
相关产品推荐

