[wp-trac] [WordPress Trac] #32183: Widget ID auto-increments conflict for concurrent users

WordPress Trac noreply at wordpress.org
Wed Apr 29 09:20:47 UTC 2015


#32183: Widget ID auto-increments conflict for concurrent users
--------------------------+-------------------------
 Reporter:  westonruter   |      Owner:
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  4.3
Component:  Widgets       |    Version:  2.8
 Severity:  normal        |   Keywords:  needs-patch
  Focuses:                |
--------------------------+-------------------------
 Each WP_Widget 2.0 “multi-widget” gets an index number associated with
 each instance of a give type. When you add a widget, this number gets
 incremented (`widget.set( 'multi_number', widget.get( 'multi_number' ) + 1
 );`). The initial multi-number is calculated from the
 `next_widget_id_number()` function which takes the max number currently
 used, and increments it by one. The same approach is used in the widgets
 admin page and the Widget Customizer.

 For frequently-used widgets, the above problem will happen frequently
 where two users will try to add the same widget at the same time, and thus
 they will start out with the same initial `multi_number`, resulting in the
 same widget ID. When they both save their changes, one user's widget will
 override the other user's widget: whoever saves last. Likewise, it is
 possible for multiple widgets to be deleted in one session (from the
 widgets admin page, since Customizer only removes widgets by moving them
 to the Inactive Widgets sidebar) then new ones added back in other
 sessions and the initial `multi_number` will not be consistent. In other
 words, the `multi_number` for each widget type needs to be synced across
 each Customizer session along with the actual setting values.

 For concurrent editing of widgets, see:

 #31436: Handle conflicts in concurrent Customizer sessions
 #12722: Concurrent editing of widgets (on admin page)

--
Ticket URL: <https://core.trac.wordpress.org/ticket/32183>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list