列出 ACF 中组字段类型的所有标签和值

list all the label and value from a group field type in ACF

我真的需要一些帮助,我的问题是我无法使用 ACF 显示组字段中的标签

下面的脚本正在显示名称和值,我需要显示 "Label" 及其 "value",但我找不到任何东西。

if( have_rows('product_specifications') ): 
    while( have_rows('product_specifications') ): the_row(); 
    $subfields = get_field('product_specifications'); 
    if( $subfields ) { ?>
    <ul> 
        <?php
        foreach ($subfields as $spec => $value) {
        if ( !empty($value) ) { ?>
        <li><?php echo $spec; ?> : <?php echo $value; ?></li>
        <?php }
        } ?>
    </ul>
    <?php }
    endwhile;
endif;

这是我当前的输出:

lamp_type : E27
wattage : 1x 60W Max
globe_included : 1
colour_cord : Clear

什么时候应该是:

Lamp Type : E27
Wattage : 1x 60W Max
Globe : 1
Colour Cord : Clear

请任何人帮助我...

您在 foreach 循环中期待的是使用 get_field_object() 函数。

在这里,您可以获取任意字段的标签和值。

有关 get_field_object() 的示例/用途,请查看 https://www.advancedcustomfields.com/resources/get_field_object/

因此,例如,您将拥有:

$field = get_field_object($spec);
echo $field['label'] . ': ' . $field['value'];

希望对您有所帮助。

使用get_row()获取子字段:

$subfields = get_row();

并使用get_sub_field_object()获取子字段object:

$field = get_sub_field_object( $key );

所以,试试这个:(没有重新缩进,以便您可以轻松地与您的代码进行比较)

if( have_rows('product_specifications') ):
    while( have_rows('product_specifications') ): the_row();
    if( $subfields = get_row() ) { ?>
    <ul>
        <?php
        foreach ($subfields as $key => $value) {
        if ( !empty($value) ) { $field = get_sub_field_object( $key ); ?>
        <li><?php echo $field['label']; ?> : <?php echo $value; ?></li>
        <?php }
        } ?>
    </ul>
    <?php }
    endwhile;
endif;