Я склонен хранить несколько вариантов в виде массива, поэтому у меня будет что-то вроде этого ..
<?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'] ); ?> />
Однако это зависит от того, как функция обратного вызова, которая дезинфицирует входящие данные, обрабатывает сохраненное значение (обратный вызов, который вы должны определить в качестве третьего параметра register_setting
). Лично, когда я имею дело с флажками, я не устанавливаю ключ массива, где, как другие могут выбрать установить ключ в 0 (или что-то вместо этого) ...
Так что мой код на самом деле имеет тенденцию выглядеть следующим образом ...
<?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'] ) ); ?> />
Если я имею дело только с флажками, мой обратный вызов для очистки будет выглядеть примерно так ...
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;
}
Разорвал это прямо из одного из моих классов плагинов (плагин только с опциями флажков), но это не тот код, который вы можете ожидать, если будете копировать, он там только для иллюстрации ...
Для радио, если вы не используете множественный выбор, это выглядит примерно так ...
<?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'] ); ?> />
ПРИМЕЧАНИЕ. Конечно, было бы разумно проверить, установлен ли ключ перед сравнением с его значением (я оставил это из вышеперечисленного, чтобы оно было коротким).
Помогло ли это? Если нет, просто дайте мне знать, что нужно уточнить ... (или что я пропускаю) ..
RE: checked()
Вы можете найти, где функция определена (в WordPress) здесь.
http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
Первый параметр в основном является условным оператором, а второй параметр (если вы хотите его определить) - это то, что нужно проверять. Значением по умолчанию для сравнения является ИСТИНА ... поэтому, если бы это было сделано, checked( 1 == 1, true )
я бы проверил, равно ли 1 == 1 истине. Если условное совпадение совпадет, вы вернетесь checked="checked"
к вам ..
ПРИМЕЧАНИЕ: я чушь в объяснении вещей, поэтому, если вышесказанное нуждается в дальнейшем разъяснении, я не буду обижаться ... просто дайте мне знать ..;)
checked( 1 == $options['option_one']
делает? Является лиchecked()
функция PHP, потому что я не мог найти его в руководстве.checked()
Функция является только один я не мог найти через Google , потому что очевидно , что это не документировано. Я так привык получать именно то, что хочу при запросе «term + wordpress». :-)checked( 1, 2 )
чтобы проверить, равен ли 1 2 ... что ничего не выдает, так как funciton специально разработан для вывода проверенного состояния для флажков или переключателей ... в любом случае, рад помочь ...;)флажок:
радио:
источник