/** * Apply cloning logic when user saves the widget. * * @since 2.0 * @param array $new_instance New settings for this instance as input by the user. * @param array $old_instance Old settings for this instance. * @param WP_Widget $widget The current widget instance. * @return array Modified settings. */ public function admin_widget_update($instance, $new_instance, $old_instance, $widget) { $data = $this->get_widget_data($_POST); $instance['csb_clone'] = $data; $settings = $widget->get_settings(); $my_id = $widget->number; switch (@$instance['csb_clone']['state']) { case 'empty': return $this->populate_widget($my_id, $settings, $instance, $widget); break; case 'ok': return $this->update_linked_widgets($my_id, $settings, $instance, $widget); break; default: $instance['csb_clone']['state'] = 'ok'; return $instance; } }