Сохранить параметры темы (options.php) С Внешнего Интерфейса
Я пытаюсь сохранить опцию из внешнего интерфейса, но пока не могу найти, как это сделать.
Итак, идея состоит в том, чтобы предоставить владельцу блога простую форму с выпадающим списком, в которой можно выбрать другую таблицу стилей.css.
Я создал его для области wp-администрирования, и он отлично работает, но я хочу сделать то же самое во внешнем интерфейсе,
Я попытался включить wp-admin/options.php в заголовке, но ничего, только ошибки,
я отправляю форму на "wp-admin/options.php "но это перенаправляет меня в страница wp-администратор/параметры.
Вот форма интерфейса:
<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 answers
Вы не хотите публиковать/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) содержит достаточно информации о том, как это можно сделать?