From 3ed7c823c94e10a0ab44f99049d6642755aaa768 Mon Sep 17 00:00:00 2001 From: Boone Gorges Date: Fri, 5 Feb 2016 19:02:51 +0000 Subject: [PATCH] When updating a user, invalidate its 'userslugs' cache. `user_nicename` can be changed via `wp_update_user()`, so we invalidate just to be safe. Props thebrandonallen. Fixes #35750. git-svn-id: https://develop.svn.wordpress.org/trunk@36482 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/user.php | 1 + tests/phpunit/tests/user.php | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) 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;