diff --git a/src/wp-includes/class-wp-user-query.php b/src/wp-includes/class-wp-user-query.php index 55b284b1b8..8a6a3cf8a4 100644 --- a/src/wp-includes/class-wp-user-query.php +++ b/src/wp-includes/class-wp-user-query.php @@ -304,7 +304,7 @@ class WP_User_Query { foreach ( $roles as $role ) { $roles_clauses[] = array( 'key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities', - 'value' => $role, + 'value' => '"' . $role . '"', 'compare' => 'LIKE', ); } @@ -317,7 +317,7 @@ class WP_User_Query { foreach ( $role__in as $role ) { $role__in_clauses[] = array( 'key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities', - 'value' => $role, + 'value' => '"' . $role . '"', 'compare' => 'LIKE', ); } @@ -330,7 +330,7 @@ class WP_User_Query { foreach ( $role__not_in as $role ) { $role__not_in_clauses[] = array( 'key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities', - 'value' => $role, + 'value' => '"' . $role . '"', 'compare' => 'NOT LIKE', ); } diff --git a/tests/phpunit/tests/user/query.php b/tests/phpunit/tests/user/query.php index 103038dccd..98f63c18c6 100644 --- a/tests/phpunit/tests/user/query.php +++ b/tests/phpunit/tests/user/query.php @@ -955,6 +955,27 @@ class Tests_User_Query extends WP_UnitTestCase { $this->assertEquals( 2, count( $users ) ); } + /** + * @ticket 22212 + */ + public function test_get_single_role_by_string_which_is_similar() { + $editors = $this->factory->user->create_many( 2, array( + 'role' => 'editor', + ) ); + + $another_editor = $this->factory->user->create( array( + 'role' => 'another-editor', + ) ); + + $users = get_users( array( + 'role' => 'editor', + 'fields' => 'ids', + ) ); + + $this->assertEqualSets( $editors, $users ); + } + + /** * @ticket 22212 */