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 class
es — radiobox-group
and/or 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>';
}
我正在使用这段代码
<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 class
es — radiobox-group
and/or 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>';
}