我尝试从前端保存一个选项,但我还找不到如何做。
因此,这个想法是为博客所有者提供一个简单的表格,并提供一个可以选择其他stylesheet.css的下拉列表。我已经为WP-Admin区域构建了它,它可以正常工作,但是我想在前端做同样的事情,

我试图在标题中包含wp-admin/options.php,但什么都没有,只是错误,
我将表格发布到“ 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>

多谢!

有帮助吗?

解决方案

您不想从前端发布 /wp-admin/options.php ,那是一个坏主意,可能会引起问题。

要从前端更新的选项,只需使用update_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_theme风格。

其他提示

也许 主题切换器重新加载(WordPress插件) 包含有关如何完成的足够信息?

许可以下: CC-BY-SA归因
scroll top