我试图覆盖WordPress中的文本小部件。我的代码如下所示:
class WP_Widget_Text_Custom extends WP_Widget {
function __construct() {
$widget_ops = array(\'classname\' => \'widget_text\', \'description\' => __(\'Arbitrary text or HTML\'));
$control_ops = array(\'width\' => 400, \'height\' => 350);
parent::__construct(\'text\', __(\'Text\'), $widget_ops, $control_ops);
}
function WP_Widget_Calendar( $args, $instance ) {
extract($args);
$title = apply_filters( \'widget_title\', empty( $instance[\'title\'] ) ? \'\' : $instance[\'title\'], $instance, $this->id_base );
$text = apply_filters( \'widget_text\', empty( $instance[\'text\'] ) ? \'\' : $instance[\'text\'], $instance );
echo $before_widget;
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
<div class="textwidget test"><?php echo !empty( $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
}
}
function custom_register_widgets() {
register_widget( \'WP_Widget_Text_Custom\' );
}
add_action( \'widgets_init\', \'custom_register_widgets\' );
我收到以下错误消息:
*函数WP\\u Widget::Widget()必须在子类中覆盖*
我复制了WP_Widget_Text
从…起default-widgets.php
到functions.php
并添加_Custom
在类名中。
为什么会出现此错误,如何修复?