Ich neige dazu, mehrere Optionen als Array zu speichern, so würde ich so etwas haben ..
<?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'] ); ?> />
Allerdings hängt es ab , wie die Callback - Funktion , dass saniert die eingehenden Daten befasst sich mit dem gespeicherten Wert (den Rückruf Sie sollten werden als dritter Parameter definieren register_setting
). Persönlich, wenn ich mit Checkboxen zu tun habe, setze ich nicht den Array-Schlüssel, wo andere den Schlüssel auf 0 setzen können (oder was auch immer stattdessen) ...
Mein Code sieht also normalerweise so aus.
<?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'] ) ); ?> />
Wenn ich nur mit Checkboxen zu tun habe, sieht mein Desinfektions-Rückruf wie folgt aus:
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;
}
Das wurde direkt aus einer meiner Plugin-Klassen (ein Plugin mit nur Kontrollkästchen-Optionen) kopiert, aber es ist kein Code, von dem Sie erwarten können, dass er beim Kopieren funktioniert. Er dient nur zur Veranschaulichung.
Wenn Sie für Radios keine Mehrfachauswahl verwenden, geschieht dies in etwa so.
<?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'] ); ?> />
HINWEIS: Es ist natürlich ratsam, zu überprüfen, ob der Schlüssel gesetzt ist, bevor er mit seinem Wert verglichen wird (ich habe das aus den obigen Gründen weggelassen, um ihn kurz zu halten).
Hat das oben genannte geholfen? Wenn nicht, lass es mich wissen, was geklärt werden muss ... (oder was mir fehlt)
RE: checked()
Hier finden Sie, wo die Funktion definiert ist (in WordPress).
http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
Der erste Parameter ist im Grunde eine bedingte Anweisung, und der zweite Parameter (wenn Sie ihn definieren möchten) gibt an, gegen was geprüft werden soll. Der Standardwert, mit dem verglichen werden soll, ist TRUE. Wenn dies also der checked( 1 == 1, true )
Fall wäre, würde ich prüfen, ob 1 == 1 gleich true ist. Wenn die Bedingung eine Übereinstimmung trifft, werden Sie checked="checked"
zu Ihnen zurückgebracht.
BEMERKUNG: Ich bin ein Quatsch, wenn es darum geht, Dinge zu erklären, werde ich nicht beleidigt sein.
checked( 1 == $options['option_one']
macht? Istchecked()
eine PHP-Funktion, weil ich sie im Handbuch nicht finden konnte.