Question

J'essaie d'enregistrer une option dans le frontend, mais je ne trouve pas encore comment le faire.
Donc, l'idée est de donner au propriétaire du blog un formulaire simple avec un menu déroulant qui permet de sélectionner un autre stylesheet.css. Je le construire pour la zone wp-admin et il fonctionne très bien, mais je veux faire la même chose dans le frontend,

i ont essayé d'inclure le wp-admin / options.php dans l'en-tête mais rien, seulement des erreurs,
je poste le formulaire "wp-admin / options.php" mais il me réoriente dans la page wp-admin / options.

ici est la forme 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>

Merci beaucoup!

Était-ce utile?

La solution

Vous ne voulez pas poster /wp-admin/options.php de l'extrémité avant , thats une mauvaise idée et peut causer des problèmes.

Pour les options mises à jour à partir du frontend simplement utiliser update_option () et assurez-vous correctement vérifier. voici un exemple en utilisant votre code avec des corrections mineures:

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

Maintenant, cela suppose que la touche option ou le nom est mon_theme style.

Autres conseils

Peut-être Theme Switcher Reloaded (Plugin Wordpress) contient assez d'informations sur la façon dont qui pourrait être fait?

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top