如何检索 ACF 中字段的值?
Posted
技术标签:
【中文标题】如何检索 ACF 中字段的值?【英文标题】:How to retrieve the value of the field in ACF? 【发布时间】:2021-11-23 05:47:27 【问题描述】:<?php if( $fields )
foreach( $fields as $field)
$value = get_field( $field['name'] );
if ($value)
echo '<dl>';
echo '<dt>' . $field['label'] . '</dt>';
echo '<dd>' . $field['value'] . '</dd>';
echo '</dl>';
?>
这就是我所拥有的。如果我在acf_get_fields
上执行var_dump
,它显然会将值设置为NULL
。我本可以知道的,因为它写在这里:
https://www.advancedcustomfields.com/resources/get_field_object/
问题:我必须首先获取特定 field_group 中的所有字段,因此我使用的是acf_get_fields
。
我认为使用 $field['value']
可以让它工作,但显然这不起作用。
有人可以帮我检索每个字段的 foreach 中的值吗?肯定有办法吗?
PS:
<?php
$fields = get_fields();
if( $fields ): ?>
<ul>
<?php foreach( $fields as $name => $value ): ?>
<li><b><?php echo $name; ?></b> <?php echo $value; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
这给了我所有的字段。我只需要来自特定字段组的特定字段列表。那就是问题所在。有大神知道怎么解决吗?
【问题讨论】:
【参考方案1】:<?php
$fields = get_field('fieldname');
foreach( $fields as $field)
echo '<dl>';
echo '<dd>' . $field . '</dd>';
echo '</dl>';
?>
【讨论】:
给我一个错误:为 foreach() 提供的参数无效 另外,你的编辑给了我同样的问题。【参考方案2】:认为该值始终为 NULL,因为您仅获取组字段,而不是帖子中的字段。举了几个例子,也许会对你有所帮助。
$post_id = 123;
$group_id = 1234;
// Get post fields
$post_fields = get_fields($post_id);
foreach ($post_fields as $key => $value)
if ($key == 'my_custom_field')
echo $value;
// Get group fields
$group_fields = acf_get_fields($group_id);
foreach ($group_fields as $key => $group_field)
if ($key == 'my_custom_field')
echo $value;
// Get field objects
$field_objects = get_field_objects($post_id);
foreach ($field_objects as $key => $field_object)
if ($key == 'my_custom_field')
echo $field_object['value'];
if ($field_object['name'] == 'my_custom_field')
echo $field_object['value'];
// only show fields from specific group
if ($field_object['parent'] == $group_id)
echo $field_object['value'];
【讨论】:
谢谢,阿诺特。这是否意味着我应该摆脱 post_id 并使用组 id 块来获得我想要的东西?我现在遇到的问题是来自该 field_group 的输入字段的最后一个值显示了两次。为什么我也应该从帖子中获取它?或者有什么办法可以得到当前的帖子?我的目标很简单:我只需要获取特定的字段组及其字段,而不是显示所有可用的字段组字段。 换句话说:我还是不明白。我有一个特定的组 ID,我想显示其字段。基本上,我需要这些字段具有特定的样式和 div,所以我想在那里剪切数组并继续接下来的三个,它们位于不同的字段组中,依此类推......以上是关于如何检索 ACF 中字段的值?的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式更新转发器字段中特定组字段的值 - 高级自定义字段 (ACF) - Wordpress
当同一转发器字段的值以其他语言更新时,ACF 转发器字段中的值是不是为空?