我正在处理我正在编写的插件的设置页面。有一个表单字段,让用户在显示价格时选择要使用的货币符号。我创建了一个功能,可以轻松显示选择菜单,并根据存储在数据库中的选项确定应选择哪个选项。出于某种原因,表单的选择菜单中没有选择任何内容。
这是此页面的插件代码......
<?php
function hc_options() {
?>
<div class="wrap">
<h2>HeadChef Settings</h2>
<form method="post" action="options.php">
<?php settings_fields( 'my-cool-plugin-settings-group' ); ?>
<?php do_settings_sections( 'my-cool-plugin-settings-group' ); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">Currency Format</th>
<td>
<?php echo select_menu('currency_format', array('1' => '$12.50', '2' => '$12,50'), esc_attr( get_option('currency_format'))); ?>
</td>
</tr>
<tr valign="top">
<th scope="row">Currency Character</th>
<td><?php
$options = array(
htmlspecialchars('º') => 'º Generic',
htmlspecialchars('$') => '$ Dollar',
htmlspecialchars('£') => '£ Pound',
htmlspecialchars('¥') => '¥ Yen',
htmlspecialchars('€') => '€ Euro',
htmlspecialchars('₱') => '₱ Peso'
);
echo select_menu('currency_prefix', $options, htmlspecialchars(esc_attr(get_option('currency_prefix')))); ?></td>
</tr>
<tr valign="top">
<th scope="row">Currency Suffix <br><small>(I.E. USD... Leave blank to disable.)</small></th>
<td><input type="text" name="currency_suffix" value="<?php echo esc_attr( get_option('currency_suffix') ); ?>" /></td>
</tr><tr>
<th scope="row">Enable Dish Ratings</th>
<td>
<fieldset><?php echo radio_buttons('Enable Dish Ratings', 'enable_dish_ratings', array('1' => 'Yes', '2' => 'No'), esc_attr(get_option('enable_dish_ratings'))); ?>
</td>
</tr><tr>
<th scope="row">Description Character Limit <small>Leave blank for no limit</small></th>
<td><input type="text" name="description_char_limit" value="<?php echo esc_attr( get_option('description_char_limit') ); ?>"></td>
</tr>
</table>
<?php submit_button(); ?>
</form>
</div>
<?php }
function select_menu($title, $options, $selected){
$output = '<select name="'.$title.'">\r\n';
if(count($options) > 0){
foreach($options as $val => $label){
$output .= '<option value="'.$val.'"';
if($val == $selected){
$output .= ' SELECTED';
}
$output .= '>'.$label."</option>\r\n";
}
}
$output .= "</select>\r\n";
return $output;
} ?>
答案 0 :(得分:0)
显然,esc_attr函数正在使用它,而currency_prefix选项被解析为$
而不是$
。