When using WP_User::set_role() to set the role, don't unset all caps when the requested role matches the current role.

Props scribu, jammitch
fixes #18932


git-svn-id: https://develop.svn.wordpress.org/trunk@22418 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ryan Boren 2012-11-07 17:16:37 +00:00
parent e23582cd09
commit 62b6474e77
1 changed files with 3 additions and 3 deletions

View File

@ -797,12 +797,12 @@ class WP_User {
* @param string $role Role name.
*/
function set_role( $role ) {
foreach ( (array) $this->roles as $oldrole )
unset( $this->caps[$oldrole] );
if ( 1 == count( $this->roles ) && $role == current( $this->roles ) )
return;
foreach ( (array) $this->roles as $oldrole )
unset( $this->caps[$oldrole] );
if ( !empty( $role ) ) {
$this->caps[$role] = true;
$this->roles = array( $role => true );