Domanda

provo a conservare un'opzione dal frontend, ma non riesco a trovare ancora come farlo.
Così, l'idea è di dare il proprietario del blog un semplice modulo con un menu a discesa che può selezionare uno stylesheet.css diverso. Ho costruire per l'area wp-admin e funziona benissimo, ma voglio fare lo stesso in frontend,

Ho cercato di includere il wp-admin / options.php nell'intestazione ma niente, solo gli errori,
i post il modulo per "wp-admin / options.php" ma mi reindirizzamento nella pagina wp-admin / opzioni.

qui è la forma frontend:

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

grazie mille!

È stato utile?

Soluzione

Se non si desidera di inviare /wp-admin/options.php dal front-end , questo è una cattiva idea, e può causare problemi.

Per Opzioni aggiornati dal frontend è sufficiente utilizzare update_option () e assicurarsi di verificare in modo corretto. ecco un esempio utilizzando il codice con correzioni minori:

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

Ora, questo presuppone che il tasto Opzione o il nome è my_theme stile.

Altri suggerimenti

Theme Switcher Reloaded (Wordpress Plugin) contiene abbastanza informazioni su come che si potrebbe fare?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top