从前端保存主题选项(options.php)
-
16-10-2019 - |
题
我尝试从前端保存一个选项,但我还找不到如何做。
因此,这个想法是为博客所有者提供一个简单的表格,并提供一个可以选择其他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插件) 包含有关如何完成的足够信息?