Eu costumo armazenar várias opções como um array, 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 deve ser definido como o terceiro parâmetro de register_setting
). Pessoalmente, quando estou lidando com caixas de seleção, não defino a chave do array, onde, como outros, podem escolher definir a chave como 0 (ou o que for) ...
Então, meu código realmente tende a se parecer com isso ...
<?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 as caixas de seleção, meu retorno de chamada de sanitização será parecido com algo do tipo ..
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;
}
Copie 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ê espera trabalhar se copiar, está lá apenas para ilustração ...
Para rádios, se você não estiver usando várias seleções, 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'] ); ?> />
OBSERVAÇÃO: É claro que seria sensato verificar se a chave foi definida antes de comparar com seu valor (deixei isso de fora para mantê-lo curto).
O acima ajudou? Se não, deixe-me saber o que precisa ser esclarecido ... (ou o que eu estou perdendo) ...
RE: checked()
Você pode encontrar onde a função está definida (no WordPress) aqui. enlace
O primeiro parâmetro é basicamente uma instrução condicional e o segundo parâmetro (se você quiser defini-lo) é o que verificar. O valor padrão para comparação é TRUE ... então, se fizer checked( 1 == 1, true )
, eu verificaria se 1 == 1 é igual a true. Se a condição atingir uma correspondência, você receberá checked="checked"
para você ..
OBSERVAÇÃO: Eu sou um lixo para explicar as coisas, então, se o texto acima precisar de mais esclarecimentos, não ficarei ofendido ... apenas me avise ..;)