register_widget()函数是用来注册一个新的小工具。
语法结构
<?php register_widget( $widget_class ) ?>
参数
$widget_class指的是注册小工具的类的 extends WP_Widget
实例
<?php class ProductWidget extends WP_Widget { public function __construct() { $widget_pro = array ( //一个数组提供了Widget的一些基本信息 'description' => "设置侧边栏产品" ); parent::__construct('pic', "近期产品",$widget_pro); } // $args中包含了4个值:before_title,after_title,before_widget,after_widget, 分别是要显示在title和widget前后的html。 // $instance是当前Widget的一些属性设置 public function widget( $args, $instance ) { $url = $instance[ 'depth' ]; $link = $instance[ 'link' ]; $title = $instance['title']; extract( $args ); echo $before_widget; ?> <div class="pic"> <a href="<?php echo $link; ?>"><img src="<?php echo $url; ?>" title="<?php echo $title; ?>" alt="<?php echo $title; ?>" style="max-width: 100%;"></a> </div> <?php } public function form( $instance ) { // Output admin widget options form $defaults = array( 'depth' => '-1' ); $depth = $instance[ 'depth' ]; $link = $instance[ 'link' ]; $title = $instance['title']; // markup for form ?> <p> <label for="<?php echo $this->get_field_id('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($title); ?>" /> </p> <p> <label for="<?php echo $this->get_field_id( 'depth' ); ?>">填写图片地址</label> <input class="widefat" type="text" id="<?php echo $this->get_field_id( 'depth' ); ?>" name="<?php echo $this->get_field_name( 'depth' ); ?>" value="<?php echo esc_attr( $depth ); ?>"> </p> <p> <label for="<?php echo $this->get_field_id( 'link' ); ?>">填写图片链接</label> <input class="widefat" type="text" id="<?php echo $this->get_field_id( 'link' ); ?>" name="<?php echo $this->get_field_name( 'link' ); ?>" value="<?php echo esc_attr( $link ); ?>"> </p> <?php } public function update( $new_instance, $old_instance ) { // Save widget options $instance = $old_instance; $instance[ 'depth' ] = strip_tags( $new_instance[ 'depth' ] ); $instance[ 'link' ] = strip_tags( $new_instance[ 'link' ] ); $instance['title'] = strip_tags($new_instance['title']); return $instance; } } function register_widgets() { register_widget( 'ProductWidget' ); } add_action( 'widgets_init', 'register_widgets' );
unregister_widget()函数用来删除默认的小工具
语法结构
<?php unregister_widget( $widget_class ) ?>
$widget_class指的是一些已WordPress定义的类
实例
function remove_default_widgets() { unregister_widget('WP_Widget_Pages'); //Pages Widget 页面 unregister_widget('WP_Widget_Calendar'); //Calendar Widget 日历 unregister_widget('WP_Widget_Archives'); //Archives Widget 文章归档 unregister_widget('WP_Widget_Media_Audio '); //Audio Player Media Widget 视频 unregister_widget('WP_Widget_Media_Image '); //Image Media Widget 画廊 unregister_widget('WP_Widget_Media_Video'); //Video Media Widget 音频 unregister_widget('WP_Widget_Meta'); //Meta Widget 功能 unregister_widget('WP_Widget_Search'); //Search Widget 搜索 unregister_widget('WP_Widget_Text'); //Text Widget 文本 unregister_widget('WP_Widget_Categories'); //Categories Widget 分类目录 unregister_widget('WP_Widget_Recent_Posts'); //Recent Posts Widget 近期文章 unregister_widget('WP_Widget_Recent_Comments'); //Recent Comments Widget 近期评论 unregister_widget('WP_Widget_RSS'); //RSS Widget unregister_widget('WP_Widget_Tag_Cloud'); //Tag Cloud Widget 标签云 unregister_widget('WP_Nav_Menu_Widget'); //Menus Widget 导航菜单 unregister_widget('WP_Widget_Custom_HTML') //Custom HTML Widget 自定义HTML } add_action('widgets_init', 'remove_default_widgets'); <br>