Bir dizi olarak birden çok seçenek depolamak eğilimindedir, bu yüzden böyle bir şey olurdu ..
<?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'] ); ?> />
Bununla birlikte, gelen verileri sterilize eden geri çağırma işlevinin kaydedilen değerle ( üçüncü parametre olarak tanımlamanız gereken geri arama) nasıl davrandığına bağlıdır register_setting
. Şahsen ben onay kutuları ile uğraşırken ben dizi anahtarı ayarlamıyorum, nerede diğerleri 0 (ya da bunun yerine) anahtarı ayarlamak için seçebilirsiniz ...
Yani kodum aslında böyle görünüyor.
<?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'] ) ); ?> />
Ben sadece onay kutuları ile ilgileniyorsanız sanitasyon geri arama satırlarında bir şey görünecektir ..
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;
}
Bunu eklenti sınıflarımdan birinden söktüm (sadece onay kutusu seçeneklerine sahip bir eklenti), ancak kopyalarsanız çalışmayı bekleyebileceğiniz kod değil, sadece örnekleme amaçlıdır.
Radyolar için, birden fazla seçim kullanmıyorsanız, böyle bir şey olur ..
<?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'] ); ?> />
NOT: Tabii ki değeri ile karşılaştırmak önce ayarlanmış anahtarı kontrol etmek akıllıca olacaktır (kısa tutmak için yukarıdakilerin dışında bıraktım).
Yukarıdakiler yardımcı oldu mu? Değilse, neyin açıklığa kavuşturulması gerektiğini bana bildirin ... (veya neyi kaçırdığımı).
YENİDEN: checked()
İşlevin nerede tanımlandığını (WordPress'te) burada bulabilirsiniz.
http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
İlk parametre temelde koşullu bir deyimdir ve ikinci parametre (tanımlamak isterseniz) neyi kontrol etmeniz gerektiğidir. Karşılaştırma yapılacak varsayılan değer DOĞRU ... yani checked( 1 == 1, true )
, 1 == 1 'in true olup olmadığını kontrol ederdim. Şartlı eşleşmeyle karşılaşırsa, size checked="checked"
geri dönersiniz.
NOT: Bir şeyleri açıklamaktan saçmalıyım, bu yüzden yukarıdakilerin daha fazla açıklığa ihtiyacı varsa rahatsız olmayacağım ... sadece bana bildirin ..;)
checked( 1 == $options['option_one']
mısınız? Mıchecked()
ben kılavuzda bulamadım çünkü bir php fonksiyonu.