提问人:Holger 提问时间:11/8/2023 最后编辑:Holger 更新时间:11/9/2023 访问量:24
从 ACF 组中获取字段值
Gettings field values from within ACF groups
问:
我正在尝试使用 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
答:
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
感谢你的帮助。我试过了,但它不起作用。见上文。我添加了我的代码
评论