Перечислить все метки и значения из группового типа поля в ACF

Мне действительно нужна помощь, моя проблема в том, что я не могу показать метку из группового поля с помощью ACF

Скрипт ниже отображает имя и значение, мне нужно отобразить "Метку" и ее "значение", и я ничего не могу найти.

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

Пожалуйста, кто-нибудь, помогите мне...

2 ответа

Решение

Использование get_row() чтобы получить подполя:

$subfields = get_row();

И использовать get_sub_field_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;

Что вы ожидаете в рамках 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'];

Надеюсь это поможет.

Другие вопросы по тегам