从前端保存主题选项(options.php)

时间:2011-04-03 作者:Philip

我试图从前端保存一个选项,但我还找不到如何保存<因此,我们的想法是为博客所有者提供一个简单的表单,其中包含一个下拉列表,可以选择不同的样式表。css。我已经为wp管理区域构建了它,它运行良好,但我想在前端也这样做,

我已尝试包括wp管理/选项。我将表单发布到“wp admin/options.php”,但它在wp admin/options页面中重定向了我。

这是前端表单:

<form id="save-theme" name="save-theme" action="/wp-admin/options.php" method="post">
<select>
    <option>Select Theme</option>
    <option>Red</option>
    <option>Dark</option>
    <option>White</option>
</select>
<button name="update-options" type="submit">Save</button>
<?php wp_nonce_field(\'update-options\'); ?>
</form>
非常感谢!

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

You Do Not want to post /wp-admin/options.php from the front end , 这是个坏主意,可能会引起问题。

要从前端更新选项,只需使用update\\u option()并确保正确验证即可。下面是一个使用代码进行小修复的示例:

<?php 
    if (isset($_POST[\'stylesheet\']) && isset($_POST[\'action\']) && $_POST[\'action\'] == "update_theme"){
        if (wp_verify_nonce($_POST[\'theme_front_end\'],\'update-options\')){ 
            update_option(\'my_theme-style\',$_POST[\'stylesheet\']);
        }else{
        ?><div class="error"><?php echo \'update failed\'; ?></div><?php}
    }
?>


<form id="save-theme" name="save-theme" action="" method="post">
<select name="stylesheet">
<?php $selected = get_option(\'my_theme-style\');
    <option>Select Theme</option>
    <option value="1" <?php if ($selected == 1) echo \'selected="selected"\'; ?>>Red</option>
    <option value="2" <?php if ($selected == 2) echo \'selected="selected"\'; ?>>Dark</option>
    <option value="3" <?php if ($selected == 3) echo \'selected="selected"\'; ?>>White</option>
</select>
<?php wp_nonce_field(\'update-options\',\'theme_front_end\'); ?>
<input type="hidden" name="action" value="update_theme">
<input type="submit" name="update-options" value="Save">
</form>
现在,假设选项键或名称是my\\u theme-style。

SO网友:hakre

大概Theme Switcher Reloaded (Wordpress Plugin) 包含有关如何实现此目的的足够信息?

结束

相关推荐

Wp_Options中的临时RSS提要没有自动删除吗?

我刚刚注意到55000个条目(!)在我的wp\\U选项表中。我有一阵子没去那里了。所以我跑了:delete from `wp_options` where `option_name` like \'_transient_timeout_rss%\' delete from `wp_options` where `option_name` like \'_transient_rss_%\' 还有。。。现在返回到645个条目。。。既然transient似乎是永恒的,我怎么能自动删除这些旧的R