WP - 高级自定义字段从字段到单选按钮获取值

WP - Advanced Custom Fields get values from field to radio buttons

我正在使用这段代码

<div class="text2">
<h1>test</h1>
<?php 

$colors = get_field('color');

if( $colors ): ?>
<p>Color: <?php echo implode(', ', $colors); ?></p>
<?php endif; ?>
<?php

$field_name = "color";
$field = get_field_object($field_name);

if( $field )
{
  echo '<select name="' . $field['key'] . '">';
    foreach( $field['choices'] as $k => $v )
    {
      echo '<option value="' . $k . '">' . $v . '</option>';
    }
  echo '</select>';
}

?>

我得到这样的输出:

如您所见,内爆代码的第一部分效果很好 - 我为本文选择了黄铜色和金色。但是选择字段从字段中生成每个值。我的目标是从选择字段中获取所有选项,但只有我标记的这些选项。

在这种情况下,正确的输出将只有 2 个选项 - 来自选择字段的黄铜和黄金。

替换为:

if( $field )
{
  echo '<select name="' . $field['key'] . '">';
    foreach( $field['choices'] as $k => $v )
    {
      echo '<option value="' . $k . '">' . $v . '</option>';
    }
  echo '</select>';
}

..用这个:

if( $field )
{
  echo '<select name="' . $field['key'] . '">';
    $selected = $field['value'];
    foreach( $field['choices'] as $k => $v )
    {
      if ( in_array( $k, $selected ) ) {
        echo '<option value="' . $k . '">' . $v . '</option>';
      }
    }
  echo '</select>';
}

.. 或更短的版本:

if( $field )
{
  echo '<select name="' . $field['key'] . '">';
    foreach( $field['value'] as $value )
    {
      $label = $field['choices'][ $value ];
      echo '<option value="' . $value . '">' . $label . '</option>';
    }
  echo '</select>';
}

[编辑]制作一组 radio 个按钮:

(您可以更改 CSS classes — radiobox-group and/or radioboxradio 按钮也使用 color 作为他们的 name.)

if( $field )
{
  echo '<div class="radiobox-group">';
    foreach( $field['value'] as $value )
    {
      $label = $field['choices'][ $value ];
      $checked = '';

      echo '<label class="radiobox">';
        printf( '<input type="radio" name="color" value="%s"%s /> ',
          esc_attr( $value ), $checked );
        echo esc_html( $label );
      echo '</label>';
    }
  echo '</div>';
}