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

时间:2018-02-19 13:50:33

标签: php wordpress advanced-custom-fields custom-fields

我正在使用此代码

<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>';
}

?>

我得到了那样的输出:

Output

正如您所看到的,内部工作的代码的第一部分非常好 - 我为本文选择了黄铜和金色。但是选择字段从字段生成每个值。我的目标是从选择字段中获取所有选项,但仅包括我标记的那些选项。

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

1 个答案:

答案 0 :(得分:1)

替换它:

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 class es - radiobox-group和/或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>';
}