Мой виджет не будет обновлять свои значения при нажатии кнопки «Сохранить»

Итак, это моя первая попытка создать виджет, который имеет функциональность создания простого эффекта опрокидывания изображения (если кто-то хочет, когда это будет сделано, оставьте мне сообщение).

Теперь я загрузил образец виджета и внес некоторые изменения, но я до сих пор не коснулся части html для вывода, поэтому игнорируем этот бит. Теперь моя проблема заключается в том, что при нажатии кнопки «Сохранить» значения в полях возвращаются к значениям по умолчанию, и они не делали этого в образце виджета. Вот мой код:

<?php /** * Plugin Image: Rollover Widget * Description: A widget that creates a rollover image effect with a hyperlink. * Version: 0.1 * Author: Zak Elas * Author URI: */ add_action( 'widgets_init', 'my_widget' ); function my_widget() { register_widget( 'MY_Widget' ); } class MY_Widget extends WP_Widget { function MY_Widget() { $widget_ops = array( 'classname' => 'example', 'description' => __('A widget that creates a rollover image effect with a hyperlink. ', 'example') ); $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'Rollover Widget' ); $this->WP_Widget( 'example-widget', __('Example Widget', 'example'), $widget_ops, $control_ops ); } function widget( $args, $instance ) { extract( $args ); //Our variables from the widget settings. $link = apply_filters('widget_link', $instance['link'] ); $image = $instance['image']; $rollover_image = $instance['rollover_image']; echo $before_widget; // Display the widget link if ( $link ) echo $before_link . $link . $after_link; //Display the name printf( '<p>' . __('Hey their Sailor! My name is %1$s.', 'example') . '</p>', $image ); printf( '<p>' . __('Hey their Sailor! My name is %1$s.', 'example') . '</p>', $rollover_image ); echo $after_widget; } //Update the widget function update( $new_instance, $old_instance ) { $instance = $old_instance; //Strip tags from link and name to remove HTML $instance['link'] = strip_tags( $new_instance['link'] ); $instance['image'] = strip_tags( $new_instance['image'] ); $instance['rollover_image'] = strip_tags( $new_instance['rollover_image'] ); return $instance; } function form( $instance ) { //Set up some default widget settings. $defaults = array( 'link' => __('Example', 'example'), 'image' => __('/images/editorial.png', 'example') , 'rollover_image' => __('/images/editorial.png', 'example') ); $instance = wp_parse_args( (array) $instance, $defaults ); ?> <p> <label for="<?php echo $this->get_field_id( 'link' ); ?>"><?php _e('link', 'example'); ?></label> <input id="<?php echo $this->get_field_id( 'link' ); ?>" name="<?php echo $this->get_field_name( 'link' ); ?>" value="<?php echo $instance['link']; ?>" style="width:100%;" /> </p> <p> <label for="<?php echo $this->get_field_id( 'image' ); ?>"><?php _e('image', 'example'); ?></label> <input id="<?php echo $this->get_field_id( 'image' ); ?>" name="<?php echo $this->get_field_name( 'image' ); ?>" value="<?php echo $instance['image']; ?>" style="width:100%;" /> </p> <p> <label for="<?php echo $this->get_field_id( 'rollover_image' ); ?>"><?php _e('rollover_image:', 'example'); ?></label> <input id="<?php echo $this->get_field_id( 'rollover_image' ); ?>" name="<?php echo $this->get_field_name( 'image' ); ?>" value="<?php echo $instance['rollover_image']; ?>" style="width:100%;" /> </p> <?php } } ?> 

И вот пример кода виджетов

 <?php /** * Plugin Name: A simple Widget * Description: A widget that displays authors name. * Version: 0.1 * Author: Bilal Shaheen * Author URI: http://gearaffiti.com/about */ add_action( 'widgets_init', 'my_widget' ); function my_widget() { register_widget( 'MY_Widget' ); } class MY_Widget extends WP_Widget { function MY_Widget() { $widget_ops = array( 'classname' => 'example', 'description' => __('A widget that displays the authors name ', 'example') ); $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'example-widget' ); $this->WP_Widget( 'example-widget', __('Example Widget', 'example'), $widget_ops, $control_ops ); } function widget( $args, $instance ) { extract( $args ); //Our variables from the widget settings. $title = apply_filters('widget_title', $instance['title'] ); $name = $instance['name']; $show_info = isset( $instance['show_info'] ) ? $instance['show_info'] : false; echo $before_widget; // Display the widget title if ( $title ) echo $before_title . $title . $after_title; //Display the name if ( $name ) printf( '<p>' . __('Hey their Sailor! My name is %1$s.', 'example') . '</p>', $name ); if ( $show_info ) printf( $name ); echo $after_widget; } //Update the widget function update( $new_instance, $old_instance ) { $instance = $old_instance; //Strip tags from title and name to remove HTML $instance['title'] = strip_tags( $new_instance['title'] ); $instance['name'] = strip_tags( $new_instance['name'] ); $instance['show_info'] = $new_instance['show_info']; return $instance; } function form( $instance ) { //Set up some default widget settings. $defaults = array( 'title' => __('Example', 'example'), 'name' => __('Bilal Shaheen', 'example'), 'show_info' => true ); $instance = wp_parse_args( (array) $instance, $defaults ); ?> //Widget Title: Text Input. <p> <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Title:', 'example'); ?></label> <input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:100%;" /> </p> //Text Input. <p> <label for="<?php echo $this->get_field_id( 'name' ); ?>"><?php _e('Your Name:', 'example'); ?></label> <input id="<?php echo $this->get_field_id( 'name' ); ?>" name="<?php echo $this->get_field_name( 'name' ); ?>" value="<?php echo $instance['name']; ?>" style="width:100%;" /> </p> //Checkbox. <p> <input class="checkbox" type="checkbox" <?php checked( $instance['show_info'], true ); ?> id="<?php echo $this->get_field_id( 'show_info' ); ?>" name="<?php echo $this->get_field_name( 'show_info' ); ?>" /> <label for="<?php echo $this->get_field_id( 'show_info' ); ?>"><?php _e('Display info publicly?', 'example'); ?></label> </p> <?php } } ?> 

Solutions Collecting From Web of "Мой виджет не будет обновлять свои значения при нажатии кнопки «Сохранить»"

В $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'example-widget' ); id_base должно быть без пробелов и в вашем изображении опрокидывания, ваше имя неверно, у вас есть имя, заданное как echo $this->get_field_name( 'image' ); когда это должно быть echo $this->get_field_name( 'rollover_image' );

 add_action ( 'widgets_init' , 'my_widget' ) ; function my_widget () { register_widget ( 'MY_Widget' ) ; } class MY_Widget extends WP_Widget { function MY_Widget () { $widget_ops = array ( 'classname' => 'example' , 'description' => __ ( 'A widget that creates a rollover image effect with a hyperlink. ' , 'example' ) ) ; $control_ops = array ( 'width' => 300 , 'height' => 350 ) ; $this -> WP_Widget ( 'example-widget' , __ ( 'Example Widget' , 'example' ) , $widget_ops , $control_ops ) ; } function widget ( $args , $instance ) { extract ( $args ) ; //Our variables from the widget settings. $link = apply_filters ( 'widget_link' , $instance[ 'link' ] ) ; $image = $instance[ 'image' ] ; $rollover_image = $instance[ 'rollover_image' ] ; echo $before_widget ; // Display the widget link if ( $link ) echo $before_link . $link . $after_link ; //Display the name printf ( '<p>' . __ ( 'Hey their Sailor! My name is %1$s.' , 'example' ) . '</p>' , $image ) ; printf ( '<p>' . __ ( 'Hey their Sailor! My name is %1$s.' , 'example' ) . '</p>' , $rollover_image ) ; echo $after_widget ; } //Update the widget function update ( $new_instance , $old_instance ) { $instance = $old_instance ; //Strip tags from link and name to remove HTML $instance[ 'link' ] = strip_tags ( $new_instance[ 'link' ] ) ; $instance[ 'image' ] = strip_tags ( $new_instance[ 'image' ] ) ; $instance[ 'rollover_image' ] = strip_tags ( $new_instance[ 'rollover_image' ] ) ; return $instance ; } function form ( $instance ) { //Set up some default widget settings. $defaults = array ( 'link' => 'Example' , 'image' => '/images/editorial.png' , 'rollover_image' => '/images/editorial.png' ) ; $instance = wp_parse_args ( ( array ) $instance , $defaults ) ; ?> <p> <label for="<?php echo $this -> get_field_id ( 'link' ) ; ?>"><?php _e ( 'link' , 'example' ) ; ?></label> <input id="<?php echo $this -> get_field_id ( 'link' ) ; ?>" name="<?php echo $this -> get_field_name ( 'link' ) ; ?>" value="<?php echo $instance[ 'link' ] ; ?>" style="width:100%;" /> </p> <p> <label for="<?php echo $this -> get_field_id ( 'image' ) ; ?>"><?php _e ( 'image' , 'example' ) ; ?></label> <input id="<?php echo $this -> get_field_id ( 'image' ) ; ?>" name="<?php echo $this -> get_field_name ( 'image' ) ; ?>" value="<?php echo $instance[ 'image' ] ; ?>" style="width:100%;" /> </p> <p> <label for="<?php echo $this -> get_field_id ( 'rollover_image' ) ; ?>"><?php _e ( 'rollover_image:' , 'example' ) ; ?></label> <input id="<?php echo $this -> get_field_id ( 'rollover_image' ) ; ?>" name="<?php echo $this -> get_field_name ( 'rollover_image' ) ; ?>" value="<?php echo $instance[ 'rollover_image' ] ; ?>" style="width:100%;" /> </p> <?php } }