告诉我如何更新小部件并检查字段,以便在数据填写不正确的情况下实现输出错误。
它可能已经构建了功能?
class My_Widget extends WP_Widget {
/**
* Sets up the widgets name etc
*/
public function __construct() {
$widget_ops = array(
\'classname\' => \'my_widget\',
\'description\' => \'My Widget is awesome\',
);
parent::__construct( \'my_widget\', \'My Widget\', $widget_ops );
}
/**
* Outputs the content of the widget
*
* @param array $args
* @param array $instance
*/
public function widget( $args, $instance ) {
echo $args[\'before_widget\'];
echo $instance[\'title\'];
echo $args[\'after_widget\'];
}
/**
* Outputs the options form on admin
*
* @param array $instance The widget options
*/
public function form( $instance ) {
$title = ! empty( $instance[\'title\'] ) ? $instance[\'title\'] : esc_html__( \'New title\', \'text_domain\' );
?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id( \'title\' ) ); ?>"><?php esc_attr_e( \'Title:\', \'text_domain\' ); ?></label>
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( \'title\' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( \'title\' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
</p>
<?php
}
/**
* Processing widget options on save
*
* @param array $new_instance The new options
* @param array $old_instance The previous options
*/
public function update( $new_instance, $old_instance ) {
// !!!!!!!
if(empty($new_instance[\'title\'])){
// !!!!!
// How to make it clear to the user that he incorrectly filled field?
// !!!!!
return \'Error!\';
}}}
问题函数“更新($new\\u instance,$old\\u instance)”
最合适的回答,由SO网友:David Lee 整理而成
尝试以下操作:
class My_Widget extends WP_Widget {
/**
* Sets up the widgets name etc
*/
public function __construct() {
$widget_ops = array(
\'classname\' => \'my_widget\',
\'description\' => \'My Widget is awesome\',
);
parent::__construct(\'my_widget\', \'My Widget\', $widget_ops);
}
/**
* Outputs the content of the widget
*
* @param array $args
* @param array $instance
*/
public function widget($args, $instance) {
echo $args[\'before_widget\'];
echo $instance[\'title\'];
echo $args[\'after_widget\'];
}
/**
* Outputs the options form on admin
*
* @param array $instance The widget options
*/
public function form($instance) {
$title = !empty($instance[\'title\']) ? $instance[\'title\'] : esc_html__(\'New title\', \'text_domain\');
if(isset($instance[\'error\'])){
echo $instance[\'error\'];
}
?>
<p>
<label for="<?php echo esc_attr($this->get_field_id(\'title\')); ?>"><?php esc_attr_e(\'Title:\', \'text_domain\'); ?></label>
<input class="widefat" id="<?php echo esc_attr($this->get_field_id(\'title\')); ?>" name="<?php echo esc_attr($this->get_field_name(\'title\')); ?>" type="text" value="<?php echo esc_attr($title); ?>">
</p>
<?php
}
/**
* Processing widget options on save
*
* @param array $new_instance The new options
* @param array $old_instance The previous options
*/
public function update($new_instance, $old_instance) {
// !!!!!!!
if (empty($new_instance[\'title\'])) {
$instance[\'error\'] = "ERROR!! title empty";
}else{
$instance[\'title\'] = strip_tags( $new_instance[\'title\'] );
}
return $instance;
}
}
您还可以检查
error
中的值
widget function
表示数据无效,小部件数据需要更新。