diff --git a/src/wp-includes/user.php b/src/wp-includes/user.php index 3cf37bdf05..abdcb3a2b3 100644 --- a/src/wp-includes/user.php +++ b/src/wp-includes/user.php @@ -1682,6 +1682,7 @@ function wp_update_user($userdata) { } wp_cache_delete( $user['user_email'], 'useremail' ); + wp_cache_delete( $user['user_nicename'], 'userslugs' ); // Merge old and new fields with new fields overwriting old ones. $userdata = array_merge( $user, $userdata ); diff --git a/tests/phpunit/tests/user.php b/tests/phpunit/tests/user.php index c55fa6d347..9262457488 100644 --- a/tests/phpunit/tests/user.php +++ b/tests/phpunit/tests/user.php @@ -902,6 +902,23 @@ class Tests_User extends WP_UnitTestCase { $this->assertWPError( $u ); } + /** + * @ticket 35750 + */ + public function test_wp_update_user_should_delete_userslugs_cache() { + $u = self::factory()->user->create(); + $user = get_userdata( $u ); + + wp_update_user( array( + 'ID' => $u, + 'user_nicename' => 'newusernicename', + ) ); + $updated_user = get_userdata( $u ); + + $this->assertFalse( wp_cache_get( $user->user_nicename, 'userslugs' ) ); + $this->assertEquals( $u, wp_cache_get( $updated_user->user_nicename, 'userslugs' ) ); + } + function test_changing_email_invalidates_password_reset_key() { global $wpdb;