您应该将所有边栏注册为一个函数,并将它们挂接到widgets\\u init中。
如果你想摆脱<div class="text_widget"> </div>
您必须编写自己的文本小部件,因为它没有过滤器。
在wp中包括/默认小部件。php文本小部件是如何构建的:
/**
* Text widget class
*
* @since 2.8.0
*/
class WP_Widget_Text extends WP_Widget {
function WP_Widget_Text() {
$widget_ops = array(\'classname\' => \'widget_text\', \'description\' => __(\'Arbitrary text or HTML\'));
$control_ops = array(\'width\' => 400, \'height\' => 350);
$this->WP_Widget(\'text\', __(\'Text\'), $widget_ops, $control_ops);
}
function widget( $args, $instance ) {
extract($args);
$title = apply_filters( \'widget_title\', empty($instance[\'title\']) ? \'\' : $instance[\'title\'], $instance, $this->id_base);
$text = apply_filters( \'widget_text\', $instance[\'text\'], $instance );
echo $before_widget;
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
<div class="textwidget"><?php echo $instance[\'filter\'] ? wpautop($text) : $text; ?></div>
<?php
echo $after_widget;
}
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance[\'title\'] = strip_tags($new_instance[\'title\']);
if ( current_user_can(\'unfiltered_html\') )
$instance[\'text\'] = $new_instance[\'text\'];
else
$instance[\'text\'] = stripslashes( wp_filter_post_kses( addslashes($new_instance[\'text\']) ) ); // wp_filter_post_kses() expects slashed
$instance[\'filter\'] = isset($new_instance[\'filter\']);
return $instance;
}
function form( $instance ) {
$instance = wp_parse_args( (array) $instance, array( \'title\' => \'\', \'text\' => \'\' ) );
$title = strip_tags($instance[\'title\']);
$text = esc_textarea($instance[\'text\']);
?>
<p><label for="<?php echo $this->get_field_id(\'title\'); ?>"><?php _e(\'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>
<textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id(\'text\'); ?>" name="<?php echo $this->get_field_name(\'text\'); ?>"><?php echo $text; ?></textarea>
<p><input id="<?php echo $this->get_field_id(\'filter\'); ?>" name="<?php echo $this->get_field_name(\'filter\'); ?>" type="checkbox" <?php checked(isset($instance[\'filter\']) ? $instance[\'filter\'] : 0); ?> /> <label for="<?php echo $this->get_field_id(\'filter\'); ?>"><?php _e(\'Automatically add paragraphs\'); ?></label></p>
<?php
}
}
您可以重用一些代码来创建自己版本的文本小部件,只需确保不使用任何相同的类或函数名即可。