我有一个复选框列表(大约100多个),并且想要遍历以获得“标签”值,而不必执行以下100多个项目。
<p>Colors: <?php the_field('colors'); ?></p>
未将复选框字段设置为中继器或组(请参见屏幕截图)。
以下代码适用于ACF版本4.4.12,但不适用于ACF Pro 5.6.10。
<?php
$groupID = '2893'; // Package Inclusions
$package_inclusions1 = apply_filters('acf/field_group/get_fields',
array(), $groupID);
foreach($package_inclusions1 as $k=>$v) {
$data = get_field($v['name']);
if($data[0] == 'Yes') {
echo '<li class="package-inclusion">' . $v['label'] . '</li>';
}
}
?>
显然,The filter has been removed in ACF5 and was not replaced.
有什么解决办法吗?我看够了,找不到解决方案。
编辑[解决方案] :2018年7月24日
向ACF支持人员提出了这个问题,这是他们提供的可行解决方案。
” 在Pro版本中删除了acf / field_group / get_fields过滤器,并在其位置引入了acf_get_fields()函数。您可以像这样使用此功能:
$ fields = acf_get_fields($ group_id); “
答案 0 :(得分:1)
这很容易获得特定帖子/页面的字段列表
$fields = get_field_objects($post_id, [$format_value], [$load_value]);
或者您想获取所有字段并遍历它们以获取以下代码中的字段值和标签:
->要进行测试,请使用以下代码,并检查var_dump
会显示哪些值
$fields = get_field_objects();
var_dump($fields);
->对于循环遍历所有字段,请在检查var_dump是否根据需要打印完美值之后使用以下代码。
$fields = get_field_objects();
if ($fields) {
foreach ($fields as $field_name => $field) {
$data = get_field($field_name);
if ($data[0] == 'Yes') {
echo '<li class="package-inclusion">' . $field['label'] . '</li>';
}
}
}