diff --git a/src/wp-includes/class-wp-user-query.php b/src/wp-includes/class-wp-user-query.php index 8a6a3cf8a4..a6ea048e05 100644 --- a/src/wp-includes/class-wp-user-query.php +++ b/src/wp-includes/class-wp-user-query.php @@ -419,7 +419,7 @@ class WP_User_Query { $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array ); // limit - if ( isset( $qv['number'] ) && $qv['number'] ) { + if ( isset( $qv['number'] ) && $qv['number'] > 0 ) { if ( $qv['offset'] ) { $this->query_limit = $wpdb->prepare("LIMIT %d, %d", $qv['offset'], $qv['number']); } else { diff --git a/tests/phpunit/tests/user/query.php b/tests/phpunit/tests/user/query.php index 98f63c18c6..f375a2294a 100644 --- a/tests/phpunit/tests/user/query.php +++ b/tests/phpunit/tests/user/query.php @@ -434,6 +434,26 @@ class Tests_User_Query extends WP_UnitTestCase { $this->assertContains( "ORDER BY user_login DESC, user_email ASC", $q->query_orderby ); } + /** + * @ticket 28631 + */ + function test_number() { + $user_ids = $this->factory->user->create_many( 10 ); + + $users = new WP_User_Query( array( 'blog_id' => get_current_blog_id() ) ); + $users = $users->get_results(); + + $this->assertEquals( 12, count( $users ) ); + + $users = new WP_User_Query( array( 'blog_id' => get_current_blog_id(), 'number' => 10 ) ); + $users = $users->get_results(); + $this->assertEquals( 10, count( $users ) ); + + $users = new WP_User_Query( array( 'blog_id' => get_current_blog_id(), 'number' => -1 ) ); + $users = $users->get_results(); + $this->assertEquals( 12, count( $users ) ); + } + /** * @ticket 21119 */ @@ -469,6 +489,10 @@ class Tests_User_Query extends WP_UnitTestCase { $query->prepare_query(); $this->assertEquals( $_query_vars, $query->query_vars ); + + $query->prepare_query( array( 'number' => -1 ) ); + $this->assertNotEquals( 'LIMIT -1', $query->query_limit ); + $this->assertEmpty( $query->query_limit ); } public function test_meta_vars_should_be_converted_to_meta_query() {