WordPress Widget, das die Instanz nicht speichert

Ich habe sehr einfaches WordPress-Widget, das 3 Eingabefeld hat. Jedes Mal, wenn ich Daten einsende, wird es nicht in der database gespeichert. Ich habe das Plugin hinzugefügt und gelöscht, mehrfach deaktiviert und wieder aktiviert, aber kein Glück. Unten ist mein Code: –

class price_package extends WP_Widget { function __construct() { parent::__construct( 'price_package', 'Price Package', array( 'classname' => 'price-package', 'description' => 'Wordpress Package Page Creator' ) ); add_action('admin_print_styles', array($this, 'register_admin_styles')); add_action('wp_enqueue_scripts', array($this, 'register_widget_styles')); add_shortcode('package', function($atts, $content = null) { $atts = shortcode_atts( array( 'name' => 'Super Platinum', 'content' => 'No description available.' ), $atts ); extract($atts); include(plugin_dir_path(__FILE__).'/views/package.php'); }); } function form ($instance) { $instance = wp_parse_args( (array)$instance, array ( 'name' => '', 'divclass' => '', 'paypal' => '', ) ); include(plugin_dir_path(__FILE__).'/views/admin.php'); } function update($new_instance, $old_instance) { $old_instance['name'] = htmlentities($new_instance['name']); $old_instance['divclass'] = htmlentities($new_instance['divclass']); $old_instance['paypal'] = htmlentities($new_instance['paypal']); return $old_instance; } function widget($args, $instance) { extract($args, EXTR_SKIP); echo $before_widget; include(plugin_dir_path(__FILE__).'/views/widget.php'); echo $after_widget; } function register_admin_styles() { wp_enqueue_style('price-package', plugins_url('price-package/css/admin.css')); } function register_widget_styles() { wp_enqueue_style('price-package', plugins_url('price-package/css/widget.css')); } } add_action('widgets_init', create_function('', 'register_widget("price_package");')); 

Lass es mich wissen, wenn ich einen Fehler mache.

Solutions Collecting From Web of "WordPress Widget, das die Instanz nicht speichert"

Das Problem ist deine Update-function. $ old_instance ist eine Art Sondervariable. Das einfachste ist

 function update($new_instance, $old_instance) { return $new_instance; } 

Für den Safe

 function update($new_instance, $old_instance) { $instance = array(); $instance['name'] = htmlentities($new_instance['name']); $instance['divclass'] = htmlentities($new_instance['divclass']); $instance['paypal'] = htmlentities($new_instance['paypal']); return $instance; }