Tiendo a almacenar múltiples opciones como una matriz, así que tendría algo como esto ...
<?php $options = get_option( 'myoption' ); ?>
<input type="checkbox" name="myoption[option_one]" value="1"<?php checked( 1 == $options['option_one'] ); ?> />
<input type="checkbox" name="myoption[option_two]" value="1"<?php checked( 1 == $options['option_two'] ); ?> />
Sin embargo, depende de cómo la función de devolución de llamada que limpia los datos entrantes trata con el valor guardado (la devolución de llamada que debe definir como el tercer parámetro de register_setting
). Personalmente, cuando trato con las casillas de verificación, no configuro la clave de matriz, donde otros pueden elegir configurar la clave en 0 (o lo que sea) ...
Entonces, mi código en realidad tiende a verse así ...
<?php $options = get_option( 'myoption' ); ?>
<input type="checkbox" name="myoption[option_one]" value="1"<?php checked( isset( $options['option_one'] ) ); ?> />
<input type="checkbox" name="myoption[option_two]" value="1"<?php checked( isset( $options['option_two'] ) ); ?> />
Si solo me ocupo de las casillas de verificación, mi devolución de llamada de saneamiento se verá algo similar a ...
public function on_option_save( $options ) {
if( !is_array( $options ) || empty( $options ) || ( false === $options ) )
return array();
$valid_names = array_keys( $this->defaults );
$clean_options = array();
foreach( $valid_names as $option_name ) {
if( isset( $options[$option_name] ) && ( 1 == $options[$option_name] ) )
$clean_options[$option_name] = 1;
continue;
}
unset( $options );
return $clean_options;
}
Lo borré directamente de una de mis clases de complementos (un complemento con solo opciones de casilla de verificación), pero no es el código que puede funcionar si lo copia, está ahí solo con fines ilustrativos ...
Para las radios, si no estás utilizando la selección múltiple, es algo como esto ...
<?php $options = get_option( 'my_option' ); ?>
<input type="radio" name="myoption[option_three]" value="value1"<?php checked( 'value1' == $options['option_three'] ); ?> />
<input type="radio" name="myoption[option_three]" value="value2"<?php checked( 'value2' == $options['option_three'] ); ?> />
NOTA: Por supuesto, sería prudente comprobar que la clave está configurada antes de compararla con su valor (lo he dejado fuera de lo anterior para que sea breve).
¿Ayudó lo anterior? Si no, déjeme saber qué necesita aclarar ... (o lo que me estoy perdiendo) ..
RE: checked()
Aquí puede encontrar dónde se define la función (en WordPress).
enlace
El primer parámetro es básicamente una declaración condicional, y el segundo parámetro (si desea definirlo) es contra lo que debe verificar. El valor predeterminado para comparar es VERDADERO ... así que si hiciéramos checked( 1 == 1, true )
, estaría comprobando si 1 == 1 es igual a verdadero. Si el condicional cumple una coincidencia, obtienes checked="checked"
devuelto.
NOTA: soy una tonta por explicar las cosas, así que si lo anterior requiere más aclaraciones, no me ofenderé ... solo avíseme ...;)