在主题选项Wordpress上保存所选选项

时间:2017-07-10 18:20:13

标签: php wordpress themes

我有简单的代码,这段代码用于主题选项

<?php function options_page() {
    if ($_POST['update_options'] == 'true') {
        update_option('color', $_POST['color']);
    }
    ?>

    <div class="wrap">
        <div id="icon-options-general" class="icon32"><br /></div>
        <h2><?php _e('Setting Theme', 'academi'); ?></h2>

        <form method="post" action="">
            <input type="hidden" name="update_options" value="true" />

            <table class="form-table">
                <tr valign="top">
                    <td class="tdleft"><label for="color"><?php echo get_option('color'); ?> <?php _e('Color Style: ', 'academi'); ?></label></td>
                    <td>
                        <select name="warna" id="warna">
                            <option value="">Change Fav Color</option>
                            <option value="aka-red" <?php echo (get_option('color'))? 'selected="selected"' : ''; ?>>Academi Red</option>
                            <option value="aka-green" <?php echo (get_option('color'))? 'selected="selected"' : ''; ?>>Academi Green</option>
                            <option value="aka-purple" <?php echo (get_option('color'))? 'selected="selected"' : ''; ?>>Academi Purple</option>
                        </select>
                    </td>
                </tr>
            </table>

            <input class="submit" type="submit" value="Save Change" />
        </form>
   </div>
<?php } ?>

数据选项成功保存在数据库中,但选择的选项始终在Academi Purple上。示例I在选项选择中选择“Academi Red”而不是Save;此数据成功保存在数据库中,但选择的选项不在Academi Red上,而是在Academi Purple上。

1 个答案:

答案 0 :(得分:1)

您的代码阅读起来非常棘手。

<?php echo (get_option('color'))? 'selected="selected"' : ''; ?>>Academi Purple</option>

这是你的条件陈述。

它的含义是IF get_option('color'),THEN set selected =“selected”。

只要您设置了选项'color',此语句将始终返回true。因此,所有选项都将被“选中”,最后一个选项将“赢”。

您需要修改此声明。

echo ((get_option('color') === 'aka-purple') ? 'selected="selected"' : '');