Eu costumo armazenar várias opções como uma matriz, então eu teria algo assim ..
<?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'] ); ?> />
No entanto, depende de como a função de retorno de chamada que limpa os dados recebidos lida com o valor salvo (o retorno de chamada que você deve definir como o terceiro parâmetro de register_setting
). Pessoalmente, quando estou lidando com caixas de seleção, não defino a chave da matriz, onde outros podem optar por definir a chave como 0 (ou o que for).
Então, meu código tende a ficar assim ..
<?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'] ) ); ?> />
Se eu estiver lidando apenas com caixas de seleção, meu retorno de chamada de higienização será algo parecido com ..
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;
}
Rasgou isso diretamente de uma das minhas classes de plugins (um plug-in com apenas opções de caixa de seleção), mas não é um código que você pode esperar que funcione se você copiar, está lá apenas para ilustração.
Para rádios, se você não estiver usando seleção múltipla, será algo assim.
<?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: É claro que seria sensato verificar se a chave está definida antes de comparar com o seu valor (deixei isso fora do exposto para mantê-lo curto).
O que foi dito acima ajudou? Caso contrário, deixe-me saber o que precisa ser esclarecido ... (ou o que estou perdendo) ..
RÉ: checked()
Você pode encontrar onde a função está definida (no WordPress) aqui.
http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
O primeiro parâmetro é basicamente uma instrução condicional, e o segundo parâmetro (se você quiser defini-lo) é contra o que verificar. O valor padrão para comparação é VERDADEIRO ... então, se o fizesse, checked( 1 == 1, true )
estaria verificando se 1 == 1 é igual a true. Se o condicional atingir uma correspondência, você checked="checked"
retornará a você.
NOTA: Sou péssimo em explicar as coisas, por isso, se o item acima precisar de mais esclarecimentos, não ficarei ofendido ... deixe-me saber ..;)
checked( 1 == $options['option_one']
faz? Échecked()
uma função php porque não consegui encontrá-la no manual.