Support date_query by user_registered in WP_User_Query.
Props ChriCo, nacin. Fixes #27283. git-svn-id: https://develop.svn.wordpress.org/trunk@29934 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
42646e67b3
commit
64bc8466db
@ -451,7 +451,8 @@ class WP_Date_Query {
|
|||||||
|
|
||||||
$valid_columns = array(
|
$valid_columns = array(
|
||||||
'post_date', 'post_date_gmt', 'post_modified',
|
'post_date', 'post_date_gmt', 'post_modified',
|
||||||
'post_modified_gmt', 'comment_date', 'comment_date_gmt'
|
'post_modified_gmt', 'comment_date', 'comment_date_gmt',
|
||||||
|
'user_registered',
|
||||||
);
|
);
|
||||||
|
|
||||||
// Attempt to detect a table prefix.
|
// Attempt to detect a table prefix.
|
||||||
@ -463,7 +464,8 @@ class WP_Date_Query {
|
|||||||
*
|
*
|
||||||
* @param array $valid_columns An array of valid date query columns. Defaults
|
* @param array $valid_columns An array of valid date query columns. Defaults
|
||||||
* are 'post_date', 'post_date_gmt', 'post_modified',
|
* are 'post_date', 'post_date_gmt', 'post_modified',
|
||||||
* 'post_modified_gmt', 'comment_date', 'comment_date_gmt'
|
* 'post_modified_gmt', 'comment_date', 'comment_date_gmt',
|
||||||
|
* 'user_registered'
|
||||||
*/
|
*/
|
||||||
if ( ! in_array( $column, apply_filters( 'date_query_valid_columns', $valid_columns ) ) ) {
|
if ( ! in_array( $column, apply_filters( 'date_query_valid_columns', $valid_columns ) ) ) {
|
||||||
$column = 'post_date';
|
$column = 'post_date';
|
||||||
@ -480,6 +482,9 @@ class WP_Date_Query {
|
|||||||
'comment_date',
|
'comment_date',
|
||||||
'comment_date_gmt',
|
'comment_date_gmt',
|
||||||
),
|
),
|
||||||
|
$wpdb->users => array(
|
||||||
|
'user_registered',
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
// If it's a known column name, add the appropriate table prefix.
|
// If it's a known column name, add the appropriate table prefix.
|
||||||
|
@ -742,6 +742,12 @@ class WP_User_Query {
|
|||||||
$this->query_where .= " AND $wpdb->users.ID NOT IN ($ids)";
|
$this->query_where .= " AND $wpdb->users.ID NOT IN ($ids)";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Date queries are allowed for the user_registered field.
|
||||||
|
if ( ! empty( $qv['date_query'] ) && is_array( $qv['date_query'] ) ) {
|
||||||
|
$date_query = new WP_Date_Query( $qv['date_query'], 'user_registered' );
|
||||||
|
$this->query_where .= $date_query->get_sql();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fires after the WP_User_Query has been parsed, and before
|
* Fires after the WP_User_Query has been parsed, and before
|
||||||
* the query is executed.
|
* the query is executed.
|
||||||
|
58
tests/phpunit/tests/user/dateQuery.php
Normal file
58
tests/phpunit/tests/user/dateQuery.php
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group user
|
||||||
|
* @group datequery
|
||||||
|
*/
|
||||||
|
class Tests_User_DateQuery extends WP_UnitTestCase {
|
||||||
|
/**
|
||||||
|
* @ticket 27283
|
||||||
|
*/
|
||||||
|
public function test_user_registered() {
|
||||||
|
$u1 = $this->factory->user->create( array(
|
||||||
|
'user_registered' => '2012-02-14 05:05:05',
|
||||||
|
) );
|
||||||
|
$u2 = $this->factory->user->create( array(
|
||||||
|
'user_registered' => '2013-02-14 05:05:05',
|
||||||
|
) );
|
||||||
|
|
||||||
|
$uq = new WP_User_Query( array(
|
||||||
|
'date_query' => array(
|
||||||
|
array(
|
||||||
|
'year' => 2012,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertEqualSets( array( $u1 ), wp_list_pluck( $uq->results, 'ID' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 27283
|
||||||
|
*/
|
||||||
|
public function test_user_registered_relation_or() {
|
||||||
|
$u1 = $this->factory->user->create( array(
|
||||||
|
'user_registered' => '2012-02-14 05:05:05',
|
||||||
|
) );
|
||||||
|
$u2 = $this->factory->user->create( array(
|
||||||
|
'user_registered' => '2013-02-14 05:05:05',
|
||||||
|
) );
|
||||||
|
$u3 = $this->factory->user->create( array(
|
||||||
|
'user_registered' => '2014-02-14 05:05:05',
|
||||||
|
) );
|
||||||
|
|
||||||
|
$uq = new WP_User_Query( array(
|
||||||
|
'date_query' => array(
|
||||||
|
'relation' => 'OR',
|
||||||
|
array(
|
||||||
|
'year' => 2013,
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'before' => '2012-03-01 00:00:00',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
) );
|
||||||
|
|
||||||
|
$this->assertEqualSets( array( $u1, $u2 ), wp_list_pluck( $uq->results, 'ID' ) );
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user