Tôi có xu hướng lưu trữ nhiều tùy chọn dưới dạng một mảng, vì vậy tôi sẽ có một cái gì đó như thế này ..
<?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'] ); ?> />
Tuy nhiên, nó phụ thuộc vào cách chức năng gọi lại vệ sinh các giao dịch dữ liệu đến với giá trị đã lưu (cuộc gọi lại mà bạn nên xác định là tham số thứ ba của register_setting
). Cá nhân khi tôi xử lý các hộp kiểm Tôi không đặt khóa mảng, trong khi những người khác có thể chọn đặt khóa thành 0 (hoặc bất cứ điều gì thay vào đó) ...
Vì vậy, mã của tôi thực sự có xu hướng trông như thế này ..
<?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'] ) ); ?> />
Nếu tôi chỉ xử lý các hộp kiểm, cuộc gọi lại vệ sinh của tôi sẽ trông giống như ..
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;
}
Trích xuất trực tiếp từ một trong các lớp plugin của tôi (một plugin chỉ có các tùy chọn hộp kiểm), nhưng đó không phải là mã mà bạn có thể mong đợi hoạt động nếu bạn sao chép, nó chỉ mang tính minh họa ..
Đối với radio, nếu bạn không sử dụng nhiều lựa chọn, nó sẽ hoạt động như thế này ..
<?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'] ); ?> />
LƯU Ý: Tất nhiên sẽ là khôn ngoan khi kiểm tra khóa được đặt trước khi so sánh với giá trị của nó (tôi đã để nó ở ngoài mức trên để giữ cho nó ngắn).
Đã giúp đỡ ở trên? Nếu không, chỉ cần cho tôi biết những gì cần làm rõ ... (hoặc những gì tôi đang thiếu) ..
RE: checked()
Bạn có thể tìm thấy nơi chức năng được xác định (trong WordPress) tại đây.
http://core.trac.wordpress.org/browser/tags/3.0.2/wp-includes/general-template.php#L2228
Tham số đầu tiên về cơ bản là một câu lệnh có điều kiện và tham số thứ hai (nếu bạn muốn xác định nó) là điều cần kiểm tra. Giá trị mặc định để so sánh là TRUE ... vì vậy nếu có thì checked( 1 == 1, true )
tôi sẽ kiểm tra xem 1 == 1 có bằng đúng không. Nếu điều kiện đạt được một trận đấu, thì bạn sẽ được checked="checked"
trả lại cho bạn ..
LƯU Ý: Tôi không thích giải thích mọi thứ, vì vậy nếu những điều trên cần làm rõ thêm, tôi sẽ không bị xúc phạm ... chỉ cần cho tôi biết ..;)
checked( 1 == $options['option_one']
không? Làchecked()
một hàm php vì tôi không thể tìm thấy nó trong hướng dẫn.