Я прагну зберігати декілька варіантів як масив, тому я маю щось подібне ..
<?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, оскільки я не зміг її знайти в посібнику.