ฉันมักจะเก็บหลาย ๆ ตัวเลือกเป็นอาร์เรย์ดังนั้นฉันจะมีอะไรเช่นนี้ ..
<?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 เพราะผมไม่สามารถหาได้ในคู่มือการใช้งาน