Pregunta

Intento guardar una opción del frontend, pero aún no puedo encontrar cómo hacerlo.
Por lo tanto, la idea es darle al propietario del blog una forma simple con un menú desplegable que pueda seleccionar una hoja de estilo diferente.css. Lo he construido para el área de WP-Admin y funciona bien, pero quiero hacer lo mismo en la frontend,

He intentado incluir el wp-admin/options.php en el encabezado pero nada, solo errores,
Publico el formulario en "wp-admin/options.php" pero me redirige en la página WP-Admin/Opciones.

Aquí está el formulario 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>

¡muchas gracias!

¿Fue útil?

Solución

No desea publicar /wp-admin/options.php desde el frente Es una mala idea y puede causar problemas.

Para actualizar las opciones desde frontend, simplemente use update_option () y asegúrese de verificar correctamente. Aquí hay un ejemplo usando su código con soluciones menores:

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

Ahora esto supone que la clave o el nombre de la opción es My_theme Style.

Otros consejos

Quizás Conmutador de tema recargado (complemento de WordPress) ¿Contiene suficiente información sobre cómo se podría hacer eso?

Licenciado bajo: CC-BY-SA con atribución
scroll top