从 ACF 组中获取字段值

Gettings field values from within ACF groups

提问人:Holger 提问时间:11/8/2023 最后编辑:Holger 更新时间:11/9/2023 访问量:24

问:

我正在尝试使用 ACF 设置营业时间解决方案。

现在,我有一个字段组,该组由 6 个组组成,每个组 3 个项目。它看起来像这样:

星期一 (团体/姓名: mo)

  • 发件人(姓名:mo_start)
  • 收件人(名称:mo_end)
  • 已关闭(名称:mo_closed)

星期二 (团体/姓名: tu)

  • 发件人(姓名:tu_start)
  • 收件人(姓名:tu_end)
  • 已关闭(名称:tu_closed)

等。。。

我设法在前端显示日期的名称,但我不知道如何达到嵌套在组中的值。

我用 get_fields、get_object、get_objects 试过,我也试过sub_field。

编辑: 感谢 Hristijan Manasijev,我尝试了以下方法:

<?php
$field_group_key = 'group_123456789';
$fields = acf_get_fields($field_group_key);

foreach( $fields as $field_name => $field ):
    $NameOfDayShort = substr($field['label'],0, 2);
    $FieldName = $field['name'];

    if( have_rows($FieldName) ):
        while( have_rows($FieldName) ): the_row(); 
            // Get sub field values.
            $From = get_sub_field($FieldName."_from");
            $To = get_sub_field($FieldName."_to");
                        
            $Times = $From." - ".$To;
        endwhile; 
    endif; 
                
    $return_string_hrs .= $NameOfDayShort.": ";
    $return_string_hrs .= $Times;
    $return_string_hrs .= "<br />";

endforeach;
?>

但这也行不通。它甚至似乎没有进入循环,因为可变$Times以“未被发现”的形式返回。我得到的唯一输出是变量 $NameOfDayShort,它是组的“顶层”。

还有另一个编辑:

我现在做了一个,并且子字段的“值”字段返回为空?这怎么可能?在管理页面上,这些值将保持存储状态print_r$fields

wordpress 高级自定义字段

评论


答:

0赞 Hristijan Manasijev 11/8/2023 #1

要访问组的子字段(也适用于转发器字段和灵活字段),您需要循环组的字段。ACF 文档包含有关此内容的部分。

<?php if( have_rows('mo') ): ?>
<?php while( have_rows('mo') ): the_row(); 
    // Get sub field values.
    $mo = get_sub_field('from');
    $from = get_sub_field('to');

    // do your logic here...
    ?>
<?php endwhile; ?>

评论

0赞 Holger 11/9/2023
感谢你的帮助。我试过了,但它不起作用。见上文。我添加了我的代码