希望在不使用field_name的情况下循环遍历ACF子字段以获取标签和值



我正在寻找一种简单的方法来显示批发服装的预包装尺寸分布。因此,产品页面将显示一个表格,显示每种尺寸的衣服有多少件。不幸的是,因为我是新来的,我不能上传我的ACF字段的图片,但我有一个ACF组字段,然后在里面我有子字段的大小的名称(小,中,大等),然后值是块的数量在该尺寸。

我想循环遍历子字段并回显子字段的标签和子字段的值,这样我就可以创建一个表。我不想使用特定的子字段名称,因为我希望即使更改了名称,代码也能正常工作。以下是目前为止的内容:

$fields = get_field('lettered_packing'); //my parent field
foreach ($fields as $field) {
echo $field;
}

这样做会回声出每个子字段的值,但我也希望能够回声出每个子字段的标签。这可能吗?

我找到了一个适合我的解决方案。我把它贴在这里,以防别人遇到这个问题。

所以,技巧是从get_field_object函数创建一个数组来获取所有子字段名,然后在遍历父字段时使用该数组来访问值和标签。

$parent_field = get_field_object('your-parent-field-name');
$fields = array();
if (count($parent_field['sub_fields'])) {
foreach ($parent_field['sub_fields'] as $field) {
$fields[] = $field['name']; 
}
}
if( have_rows($parent_field) ):
while ( have_rows($parent_field) ) : the_row(); 
foreach ($fields as $sub_field) {
$field = get_sub_field_object($sub_field);

echo '<span>' . $field['label'] . ':' . $field['value'] . '</span>'; 
}

我不确定这是否是最有说服力的解决方案。但是现在还可以。

<?php
// To get "{label} {value}" from acf group:
// input desired group name 
$group = 'parent_group_name_goes_here'; 
if (have_rows($group)) {
while (have_rows($group)) : $the_row = the_row();
foreach ($the_row as $field_key => $field_value) {
// You only get a numeric key and the output value from the_row so...
// Retrieve the field object with all the meta data using this key:
$field_object = get_field_object($field_key);


// Display the label from get_field_object
echo $field_object['label'];

/** Other options are :  
* ['ID']
* ['key']
* ['label']
* ['name']
* ['prefix']
* ['type']
* ['value']
* ['menu_order']
* ['instructions']
* ['required']
* ['id']
* ['class']
* ['conditional_logic']
* ['parent']
* ['wrapper'] => ['width'] / ['class'] / ['id']
* ['default_value']
* ['placeholder']
* ['prepend']
* ['append']
* ['maxlength']
* ['_name']
* ['_valid']
* **/

// Display the value from the foreach loop
echo $field_value;
}
endwhile;
}
?>

相关内容

  • 没有找到相关文章

最新更新