Saya cenderung menyimpan beberapa opsi sebagai array, jadi saya akan memiliki sesuatu seperti ini ..
<?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'] ); ?> />
Namun itu tergantung bagaimana fungsi panggilan balik yang membersihkan data yang masuk berkaitan dengan nilai yang disimpan (panggilan balik yang Anda harus definisikan sebagai parameter ketiga register_setting
). Secara pribadi ketika saya berurusan dengan kotak centang, saya tidak mengatur kunci array, di mana orang lain dapat memilih untuk mengatur kunci ke 0 (atau apa pun sebagai gantinya) ...
Jadi kode saya sebenarnya cenderung terlihat seperti ini ..
<?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'] ) ); ?> />
Jika saya hanya berurusan dengan kotak centang, panggilan balik sanitasi saya akan terlihat seperti ini ..
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;
}
Ripped itu langsung dari salah satu kelas plugin saya (sebuah plugin dengan hanya opsi kotak centang), tapi itu bukan kode yang dapat Anda harapkan berfungsi jika Anda menyalin, itu ada di sana hanya untuk ilustrasi ..
Untuk radio, jika Anda tidak menggunakan banyak pilihan, akan seperti ini ..
<?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'] ); ?> />
CATATAN: Tentu saja akan bijaksana untuk memeriksa kunci yang ditetapkan sebelum membandingkan dengan nilainya (saya telah meninggalkan itu di atas agar tetap pendek).
Apakah bantuan di atas? Jika tidak, beri tahu saya apa yang perlu diklarifikasi ... (atau apa yang saya lewatkan) ..
KEMBALI: checked()
Anda dapat menemukan di mana fungsi didefinisikan (di WordPress) di sini.
http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
Parameter pertama pada dasarnya adalah pernyataan bersyarat, dan parameter kedua (jika Anda ingin mendefinisikannya) adalah apa yang harus diperiksa. Nilai default untuk dibandingkan adalah BENAR ... jadi jika harus dilakukan checked( 1 == 1, true )
saya akan memeriksa apakah 1 == 1 sama dengan true. Jika persyaratan hits pertandingan, maka Anda akan checked="checked"
dikembalikan kepada Anda ..
CATATAN: Saya sampah menjelaskan hal-hal, jadi jika hal di atas memerlukan klarifikasi lebih lanjut, saya tidak akan tersinggung ... beri tahu saya ..;)
checked( 1 == $options['option_one']
? Merupakanchecked()
fungsi php karena saya tidak dapat menemukannya di manual.