首先,打开function widget:
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
// ...
}
在上
function update:
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;
}
最后,在
function form, 添加以下内容:
<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:让我们看看“关于我们”小部件的完整代码,使用复选框显示/隐藏化身图像:
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\' );
测试和工作。
Edit (2015-Sept-08): Important! 该小部件示例使用PHP4样式的构造函数,但是WordPress 4.3会切换到PHP5,因此您也应该切换构造函数。更多信息,here.
如果你使用“主题检查”插件,你会看到一个通知,建议你使用__construct()
而不是WP_Widget
. 删除第一个函数并添加以下函数:
function __construct() {
parent::__construct(
\'about_us\', // Base ID
__( \'About US\', \'wptheme\' ), // Name
array( \'description\' => __( \'About Us\', \'wptheme\' ), ) // Args
);
}