ACF получает метку поля в пользовательском коде
У меня есть некоторый пользовательский код для отображения моих пользовательских полей так, как я хочу.
К сожалению, с помощью этого кода я, похоже, не могу получить доступ к $field['label']
. Я пробовал разные способы, но на самом деле не знаю, как этого добиться.
<?php
$fields = get_fields();
if( $fields ): ?>
<ul>
<?php
foreach( $fields as $name => $value ):
if (stripos($name, 'isbn') !== false) : ?>
<li><b><?php echo $name['label']; ?></b> <?php echo $value; ?></li>
<?php endif;
endforeach; ?>
</ul>
<?php endif; ?>
1 answers
Попробуйте это, что сработало для меня:
<?php
$fields = get_field_objects(); // I changed from get_fields()
if( $fields ): ?>
<ul>
<?php
// I changed $value to $field (i.e. the variable name)
foreach( $fields as $name => $field ):
if (stripos($name, 'isbn') !== false) : ?>
<li><b><?php echo $field['label']; ?></b> <?php echo $field['value']; ?></li>
<?php endif;
endforeach; ?>
</ul>
<?php endif; ?>
Таким образом, ссылаясь на $field
в коде, $field['label']
- это метка поля (например, "Книга ISBN"), а $field['value']
- значение поля. Обратите внимание, однако, что значение поля может быть array
, поэтому просто echo
- это (скорее всего, выдаст предупреждение PHP и) даст вам "Массив".
См. https://www.advancedcustomfields.com/resources/get_field_objects / если вам нужна помощь с функцией get_field_objects()
.
PS: Если вы только хотите получить метку одного поля, а не всех полей (текущей/целевой записи/пользователя/и т.д.), вы можете использовать get_field_object()
вместо этого.