Intereting Posts
Вызов функции-члена get_error_messages () в null 500 (Внутренняя ошибка сервера) внешнего файла php Как реорганизовать элементы, возвращенные wp_list_comments ()? Как запустить цикл с запросом или без него Программа Tv с CPT и настраиваемым полем Установите «Display Name Publicly As ..» для имени пользователя по умолчанию jQuery (document) .ready () и Angular Controller не вызывается из редактора внешнего редактора Visual Composer Обновление страницы через редактор темы вызвало разрыв wp admin Оберните подменю в div, если родительский ли имеет определенный класс, используя ходунок и функцию start_lvl используя данные для входа в WordPress для другого сайта / приложения / форума? Конфликт WordPress с несколькими нагрузками Сделать несколько страниц и установить шаблон / контент для активации темы? Данные примера импорта wp-cli Загружает процесс с помощью phpThumb перед созданием эскизов Как я могу запросить 3 сообщения из разных категорий (по одной из каждой категории)

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

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

Теперь я загрузил образец виджета и внес некоторые изменения, но я до сих пор не коснулся части 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 } }