Tendo a memorizzare più opzioni come un array, quindi avrei qualcosa del genere ..
<?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'] ); ?> />
Tuttavia, dipende dal modo in cui la funzione di callback che sanifica i dati in entrata gestisce il valore salvato (il callback che dovresti definire come terzo parametro di register_setting
). Personalmente quando ho a che fare con le caselle di controllo non imposto la chiave dell'array, dove come altri possono scegliere di impostare la chiave su 0 (o qualunque cosa invece) ...
Quindi il mio codice in realtà tende ad assomigliare a questo ..
<?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 ho solo a che fare con le caselle di controllo, il callback di sanificazione sarà simile 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;
}
Strappato direttamente da una delle mie classi di plugin (un plugin con solo opzioni di casella di controllo), ma non è un codice che puoi aspettarti di funzionare se copi, è lì solo a scopo illustrativo.
Per le radio, se non si utilizza la selezione multipla, va qualcosa del genere ..
<?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: sarebbe ovviamente saggio verificare che la chiave sia impostata prima di confrontarla con il suo valore (l'ho lasciato fuori da quanto sopra per mantenerlo breve).
Quanto sopra ha aiutato? In caso contrario, fammi sapere cosa deve essere chiarito ... (o cosa mi sto perdendo) ..
RI: checked()
Puoi trovare dove è definita la funzione (in WordPress) qui.
http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
Il primo parametro è fondamentalmente un'istruzione condizionale e il secondo parametro (se si desidera definirlo) è cosa da verificare. Il valore predefinito da confrontare è TRUE ... quindi, se lo facessi, checked( 1 == 1, true )
verificherei se 1 == 1 è uguale a vero. Se il condizionale colpisce una partita, allora vieni checked="checked"
restituito a te ..
NOTA: Sono spazzatura nello spiegare le cose, quindi se quanto sopra necessita di ulteriori chiarimenti non mi offenderò ... fammelo sapere ..;)
checked( 1 == $options['option_one']
fa? Èchecked()
una funzione php perché non l'ho trovata nel manuale.