J'ai tendance à stocker plusieurs options sous forme de tableau, donc j'aurais quelque chose comme ça ..
<?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'] ); ?> />
Cependant, cela dépend de la façon dont la fonction de rappel qui nettoie les données entrantes traite la valeur enregistrée (le rappel que vous devez définir comme troisième paramètre register_setting
). Personnellement, lorsque je traite des cases à cocher, je ne définis pas la clé du tableau, alors que d'autres peuvent choisir de définir la clé sur 0 (ou autre chose à la place) ...
Donc mon code a tendance à ressembler à ça ..
<?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 je ne traite que des cases à cocher, mon rappel de désinfection ressemblera à quelque chose comme ..
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;
}
Extrait cela directement de l'une de mes classes de plugins (un plugin avec seulement des options de case à cocher), mais ce n'est pas du code que vous pouvez vous attendre à travailler si vous copiez, il est là à titre d'illustration uniquement.
Pour les radios, si vous n'utilisez pas la sélection multiple, cela ressemble à ceci.
<?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'] ); ?> />
REMARQUE: Il serait bien sûr sage de vérifier que la clé est définie avant de la comparer à sa valeur (j'ai laissé cela hors de ce qui précède pour le garder court).
Est-ce que ce qui précède a aidé? Sinon, faites le moi savoir ce qui doit être clarifié ... (ou ce qui me manque) ..
RÉ: checked()
Vous pouvez trouver où la fonction est définie (dans WordPress) ici.
http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
Le premier paramètre est fondamentalement une instruction conditionnelle, et le second paramètre (si vous voulez le définir) est celui à vérifier. La valeur par défaut à comparer est VRAIE ... donc si c'était le cas, checked( 1 == 1, true )
je vérifierais si 1 == 1 est égal à vrai. Si le conditionnel correspond à un match, alors vous revenez checked="checked"
à vous.
NOTE: Je suis des ordures pour expliquer les choses, donc si ce qui précède a besoin de précisions supplémentaires, je ne serai pas offensé ... faites le moi savoir ..;)
checked( 1 == $options['option_one']
fait? Estchecked()
une fonction php car je ne l'ai pas trouvée dans le manuel.