我正在使用此代码
<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个选项 - 来自选择字段的黄铜和黄金。
答案 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
和/或radiobox
。radio
按钮也使用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>';
}