Вопрос

Я стараюсь сохранить опцию с фронта, но я еще не могу найти, как это сделать.
Таким образом, идея состоит в том, чтобы дать владельцу блога простую форму с выпадающим списком, который может выбрать другой 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 с передней части , это плохая идея и может вызвать проблемы.

Для обновленных параметров с Frontend просто используйте 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 с атрибуция
Не связан с wordpress.stackexchange
scroll top