Сохранить параметры темы (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>

Большое спасибо!

Author: Philip, 2011-04-03

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.

 2
Author: Bainternet, 2012-02-04 11:08:51

Может быть, Перезагрузка переключателя тем (плагин Wordpress) содержит достаточно информации о том, как это можно сделать?

 1
Author: hakre, 2011-04-03 10:15:45