为什么我的值与我的wordpress选项不匹配?

时间:2016-01-14 01:09:27

标签: php wordpress

我正在处理我正在编写的插件的设置页面。有一个表单字段,让用户在显示价格时选择要使用的货币符号。我创建了一个功能,可以轻松显示选择菜单,并根据存储在数据库中的选项确定应选择哪个选项。出于某种原因,表单的选择菜单中没有选择任何内容。

option value

这是此页面的插件代码......

<?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('&#186;') => '&#186; Generic',
            htmlspecialchars('&#36;') => '&#36; Dollar',
            htmlspecialchars('&#163;') => '&#163; Pound',
            htmlspecialchars('&#165;') => '&#165; Yen',
            htmlspecialchars('&#128;') => '&#128; Euro',
            htmlspecialchars('&#8369;') => '&#8369; 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;

} ?>

1 个答案:

答案 0 :(得分:0)

显然,esc_attr函数正在使用它,而currency_prefix选项被解析为&#036;而不是&#36;