Đầu tiên, trên widget chức năng :
function widget( $args, $instance ) {
extract( $args );
// Add this line
$your_checkbox_var = $instance[ 'your_checkbox_var' ] ? 'true' : 'false';
// Change 'your_checkbox_var' for your custom ID
// ...
}
Về cập nhật chức năng :
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
// Add this line
$instance[ 'your_checkbox_var' ] = $new_instance[ 'your_checkbox_var' ];
// Change 'your_checkbox_var' for your custom ID
// ...
return $instance;
}
Cuối cùng, trên mẫu hàm , thêm phần này:
<p>
<input class="checkbox" type="checkbox" <?php checked( $instance[ 'your_checkbox_var' ], 'on' ); ?> id="<?php echo $this->get_field_id( 'your_checkbox_var' ); ?>" name="<?php echo $this->get_field_name( 'your_checkbox_var' ); ?>" />
<label for="<?php echo $this->get_field_id( 'your_checkbox_var' ); ?>">Label of your checkbox variable</label>
</p>
<!-- Remember to change 'your_checkbox_var' for your custom ID, as well -->
EDIT:
Chúng ta hãy xem mã đầy đủ của tiện ích 'Giới thiệu' bằng cách sử dụng hộp kiểm để hiển thị / ẩn hình ảnh đại diện:
class about_us extends WP_Widget {
function about_us() {
$widget_ops = array( 'classname' => 'about_us', 'description' => __( 'About Us', 'wptheme' ) );
$this->WP_Widget( 'about_us', __( 'About Us', 'wptheme' ), $widget_ops, $control_ops );
}
function widget( $args, $instance ) {
extract( $args );
$title = apply_filters( 'widget_title', $instance[ 'title' ] );
$text = $instance[ 'text' ];
// The following variable is for a checkbox option type
$avatar = $instance[ 'avatar' ] ? 'true' : 'false';
echo $before_widget;
if ( $title ) {
echo $before_title . $title . $after_title;
}
// Retrieve the checkbox
if( 'on' == $instance[ 'avatar' ] ) : ?>
<div class="about-us-avatar">
<?php echo get_avatar( get_the_author_meta( 'user_email' ), '50', '' ); ?>
</div>
<?php endif; ?>
<div class="textwidget">
<p><?php echo esc_attr( $text ); ?></p>
</div>
<?php
echo $after_widget;
}
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance[ 'title' ] = strip_tags( $new_instance[ 'title' ] );
$instance[ 'text' ] = strip_tags( $new_instance[ 'text' ] );
// The update for the variable of the checkbox
$instance[ 'avatar' ] = $new_instance[ 'avatar' ];
return $instance;
}
function form( $instance ) {
$defaults = array( 'title' => __( 'About Us', 'wptheme' ), 'avatar' => 'off' );
$instance = wp_parse_args( ( array ) $instance, $defaults ); ?>
<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>">Title</label>
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $instance[ 'title' ] ); ?>" />
</p>
<!-- The checkbox -->
<p>
<input class="checkbox" type="checkbox" <?php checked( $instance[ 'avatar' ], 'on' ); ?> id="<?php echo $this->get_field_id( 'avatar' ); ?>" name="<?php echo $this->get_field_name( 'avatar' ); ?>" />
<label for="<?php echo $this->get_field_id( 'avatar' ); ?>">Show avatar</label>
</p>
<p>
<label for="<?php echo $this->get_field_id( 'text' ); ?>">About Us</label>
<textarea class="widefat" id="<?php echo $this->get_field_id( 'text' ); ?>" rows="10" cols="10" name="<?php echo $this->get_field_name( 'text' ); ?>"><?php echo esc_attr( $instance[ 'text' ] ); ?></textarea>
</p>
<?php
}
}
register_widget( 'about_us' );
Đã thử nghiệm và làm việc.
Chỉnh sửa (2015-Tháng Chín-08): Quan trọng! Ví dụ tiện ích đó sử dụng các hàm tạo kiểu PHP4, tuy nhiên WordPress 4.3 chuyển sang PHP5, vì vậy bạn cũng nên chuyển đổi các hàm tạo. Thêm thông tin, ở đây .
Nếu bạn sử dụng plugin 'kiểm tra chủ đề', bạn sẽ thấy một thông báo gợi ý bạn sử dụng __construct()
thay vì WP_Widget
. Xóa chức năng đầu tiên và thêm chức năng sau:
function __construct() {
parent::__construct(
'about_us', // Base ID
__( 'About US', 'wptheme' ), // Name
array( 'description' => __( 'About Us', 'wptheme' ), ) // Args
);
}