[wp-trac] [WordPress Trac] #38645: Improve roles reinit when switching between sites
WordPress Trac
noreply at wordpress.org
Thu Nov 3 18:08:52 UTC 2016
#38645: Improve roles reinit when switching between sites
-----------------------------+-------------------------------------------
Reporter: johnjamesjacoby | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Role/Capability | Version: trunk
Severity: normal | Keywords: has-patch needs-testing early
Focuses: multisite |
-----------------------------+-------------------------------------------
When switching between sites (since r39083) the `$wp_roles` global is
being recreated instead of adjusting the values of the existing global.
The current regression means if a plugin was keeping its own copy of the
`$wp_roles` global around (maybe as a property in a class, or for some
other convenience sake) then then newly created `$wp_roles` global no
longer points to that same copy. (See #23016 for more details & examples.)
History lesson: previous to that changeset, the `reinit()` method was used
to update the roles for the witched site. That method was largely a copy
of the `_init()` method, and was purpose built for blog switching.
----
Anecdotally, it's unlikely this will cause very many problems, but it is
still a regression from previous behavior, and I believe the fix is fairly
straightforward.
We can take inspiration from the `WP_User::for_blog()` method, and
introduce a `for_blog()` method to the `WP_Roles` class to basically do
the exact same thing in the exact same way. We can make alterations to the
blog switching functions to update the `$wp_roles` and
`$current_user->roles` values in unison.
Architecturally, I think it makes sense to call these methods together,
but not have one call the other all the time, because there may a reason
or time where that control is welcome, and marrying them together now
makes divorcing them later difficult.
Patch imminent.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/38645>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list