Save Theme Options (options.php) From The Frontend

I try to save an option from the frontend but i can’t find yet how to do it.
So, the idea is to give the blog owner a simple form with a dropdown that can select a different stylesheet.css.
I have build it for the wp-admin area and it works fine, but i want to do the same in the frontend,

i have tried to include the wp-admin/options.php in the header but nothing, just errors,
i post the form to “wp-admin/options.php” but it redirect me in the wp-admin/options page.

Read More

here is the frontend form:

<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>

thanks a lot!

Related posts

Leave a Reply

2 comments

  1. You Do Not want to post /wp-admin/options.php from the front end , thats a bad idea and can cause problems.

    To updated Options from the frontend simply use update_option() and make sure you verify correctly. here is an example using your code with minor fixes:

    <?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>
    

    Now this assumes that the option key or name is my_theme-style.