Cómo Usar Checkbox en una Página de Opciones Personalizada Usando la API de Configuración

18 ago 2013, 00:06:20
Vistas: 29.1K
Votos: 11

¿Podrían indicarme cómo puedo agregar un checkbox a la Settings API al crear una Página de Opciones Personalizada? Estoy usando el siguiente código para agregar un campo de texto que funciona perfectamente, pero estoy totalmente confundido sobre cómo agregar un checkbox a la Settings API y opciones. Intenté cambiar el tipo de input a checkbox pero no estoy seguro qué poner en el Value, además cuando guardo el formulario el checkbox sigue apareciendo desmarcado!

add_settings_field('the_option_label',
                    'Mostrar Párrafo:',
                     array($this,'the_option_label_setting'),
                     __FILE__,
                     'hte_main_section');

public function the_option_label_setting()
    {
       echo "<input name='My_Theme_Options[the_option_label]' type='text' value='{$this->options['the_option_label']}'/>";
    }

Gracias

1
Comentarios

Es simple de leer y entender. - http://www.kvcodes.com/2016/10/creating-custom-options-page-wordpress/

Kvvaradha Kvvaradha
25 oct 2016 16:04:37
Todas las respuestas a la pregunta 1
3
11

Echa un vistazo a: La Guía Completa de la API de Configuración de WordPress (Parte 8: Validación, Sanitización y Entrada II):

add_settings_field(  
    'Checkbox Element',  
    'Checkbox Element',  
    'sandbox_checkbox_element_callback',  
    'sandbox_theme_input_examples',  
    'input_examples_section'  
);

function sandbox_checkbox_element_callback() {

    $options = get_option( 'sandbox_theme_input_examples' );

    $html = '<input type="checkbox" id="checkbox_example" name="sandbox_theme_input_examples[checkbox_example]" value="1"' . checked( 1, $options['checkbox_example'], false ) . '/>';
    $html .= '<label for="checkbox_example">Este es un ejemplo de un checkbox</label>';

    echo $html;

}

EDITADO: Los campos de checkbox no utilizan el atributo value para determinar si la casilla está marcada. Utilizan un atributo checked. La línea $html de arriba ha sido editada usando el código del artículo referenciado anteriormente. Lee los artículos para más detalles.

18 ago 2013 02:58:14
Comentarios

Hola Till, gracias por tu comentario. Probé tu sugerencia y el código del enlace, pero todavía tengo algunos problemas aquí. El problema es que cuando marco la casilla de verificación y guardo las opciones, la nueva página sigue sin estar marcada. Es decir, no está leyendo los datos de las Opciones. ¿Podrías decirme cómo solucionar esto? Sé que en un cuadro de texto podemos usar value='{$this->options['the_option_label']}', pero ¿qué hay de la casilla de verificación?

Mona Coder Mona Coder
18 ago 2013 08:41:49

Edité la respuesta de Till con el código corregido del artículo.

Charles Clarkson Charles Clarkson
18 ago 2013 09:12:59

Tal vez sea mejor si verificamos que la opción esté configurada como checked( 1, $options['checkbox_example'] ?? '', false ). Por si acaso no queremos un error o un mensaje de advertencia por eso.

JalalJaberi JalalJaberi
25 jul 2023 17:44:51