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.checked()
fonction est la seule que je n'ai pas trouvée via google car apparemment elle n'est pas documentée. J'étais tellement habitué à obtenir exactement ce que je voulais en interrogeant "term + wordpress". :-)checked( 1, 2 )
pour vérifier si 1 est égal à 2 ... qui ne produirait rien, car cela funciton est spécialement conçu pour sortir un état vérifié pour les cases à cocher ou les boutons radio .. dans tous les cas, heureux de vous aider ...;)case à cocher:
radio:
la source