Introduce 'paged' parameter for WP_User_Query
.
This is an alternative to using 'offset', and manually calculating pagination. Note that 'paged' works only in conjunction with 'number', the latter of which provides the per-page value. Props sebastian.pisula. Fixes #25145. git-svn-id: https://develop.svn.wordpress.org/trunk@34531 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
7757f84a69
commit
039955d5cd
@ -83,6 +83,7 @@ class WP_User_Query {
|
|||||||
* @since 4.2.0 Added 'meta_value_num' support for `$orderby` parameter. Added multi-dimensional array syntax
|
* @since 4.2.0 Added 'meta_value_num' support for `$orderby` parameter. Added multi-dimensional array syntax
|
||||||
* for `$orderby` parameter.
|
* for `$orderby` parameter.
|
||||||
* @since 4.3.0 Added 'has_published_posts' parameter.
|
* @since 4.3.0 Added 'has_published_posts' parameter.
|
||||||
|
* @since 4.4.0 Added 'paged' parameter.
|
||||||
* @access public
|
* @access public
|
||||||
*
|
*
|
||||||
* @global wpdb $wpdb
|
* @global wpdb $wpdb
|
||||||
@ -124,6 +125,8 @@ class WP_User_Query {
|
|||||||
* @type int $number Number of users to limit the query for. Can be used in
|
* @type int $number Number of users to limit the query for. Can be used in
|
||||||
* conjunction with pagination. Value -1 (all) is not supported.
|
* conjunction with pagination. Value -1 (all) is not supported.
|
||||||
* Default empty (all users).
|
* Default empty (all users).
|
||||||
|
* @type int $paged When used with number, defines the page of results to return.
|
||||||
|
* Default 1.
|
||||||
* @type bool $count_total Whether to count the total number of users found. If pagination
|
* @type bool $count_total Whether to count the total number of users found. If pagination
|
||||||
* is not needed, setting this to false can improve performance.
|
* is not needed, setting this to false can improve performance.
|
||||||
* Default true.
|
* Default true.
|
||||||
@ -157,6 +160,7 @@ class WP_User_Query {
|
|||||||
'order' => 'ASC',
|
'order' => 'ASC',
|
||||||
'offset' => '',
|
'offset' => '',
|
||||||
'number' => '',
|
'number' => '',
|
||||||
|
'paged' => 1,
|
||||||
'count_total' => true,
|
'count_total' => true,
|
||||||
'fields' => 'all',
|
'fields' => 'all',
|
||||||
'who' => '',
|
'who' => '',
|
||||||
@ -323,10 +327,11 @@ class WP_User_Query {
|
|||||||
|
|
||||||
// limit
|
// limit
|
||||||
if ( isset( $qv['number'] ) && $qv['number'] ) {
|
if ( isset( $qv['number'] ) && $qv['number'] ) {
|
||||||
if ( $qv['offset'] )
|
if ( $qv['offset'] ) {
|
||||||
$this->query_limit = $wpdb->prepare("LIMIT %d, %d", $qv['offset'], $qv['number']);
|
$this->query_limit = $wpdb->prepare("LIMIT %d, %d", $qv['offset'], $qv['number']);
|
||||||
else
|
} else {
|
||||||
$this->query_limit = $wpdb->prepare("LIMIT %d", $qv['number']);
|
$this->query_limit = $wpdb->prepare( "LIMIT %d, %d", $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$search = '';
|
$search = '';
|
||||||
|
@ -459,7 +459,7 @@ class Tests_User_Query extends WP_UnitTestCase {
|
|||||||
// All values get reset
|
// All values get reset
|
||||||
$query->prepare_query( array( 'number' => 8 ) );
|
$query->prepare_query( array( 'number' => 8 ) );
|
||||||
$this->assertNotEmpty( $query->query_limit );
|
$this->assertNotEmpty( $query->query_limit );
|
||||||
$this->assertEquals( 'LIMIT 8', $query->query_limit );
|
$this->assertEquals( 'LIMIT 0, 8', $query->query_limit );
|
||||||
|
|
||||||
// All values get reset
|
// All values get reset
|
||||||
$query->prepare_query( array( 'fields' => 'all' ) );
|
$query->prepare_query( array( 'fields' => 'all' ) );
|
||||||
@ -857,4 +857,21 @@ class Tests_User_Query extends WP_UnitTestCase {
|
|||||||
|
|
||||||
$this->assertEqualSets( $expected, $found );
|
$this->assertEqualSets( $expected, $found );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 25145
|
||||||
|
*/
|
||||||
|
public function test_paged() {
|
||||||
|
$users = $this->factory->user->create_many( 5 );
|
||||||
|
|
||||||
|
$q = new WP_User_Query( array(
|
||||||
|
'number' => 2,
|
||||||
|
'paged' => 2,
|
||||||
|
'orderby' => 'ID',
|
||||||
|
'order' => 'DESC', // Avoid funkiness with user 1.
|
||||||
|
'fields' => 'ids',
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertEquals( array( $users[2], $users[1] ), $q->results );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user