Salva a tema (options.php) dal Frontend
-
16-10-2019 - |
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!
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?