方法#1:pre_user_query
挂钩:
可用的过滤器不多,但您可以尝试
pre_user_query
挂钩:
// Add filter:
add_action( \'pre_user_query\', \'wpse_filter_by_reg_date\' );
// Query:
$query = new WP_User_Query( $args );
// Remove filter:
remove_action( \'pre_user_query\', \'wpse_filter_by_reg_date\' );
其中,筛选器回调为:
/**
* Filter WP_User_Query by user_registered date
*
* @see http://wordpress.stackexchange.com/a/160826/26350
* @param WP_User_Query The current WP_User_Query instance
*/
function wpse_filter_by_reg_date( $q )
{
global $wpdb;
$q->query_where .= $wpdb->prepare(
" AND {$wpdb->users}.user_registered >= \'%s\' ",
date( "Y-m-d" )
);
}
然后可以根据需要修改过滤器回调。
方法#2:WP_User_Query
使用自定义查询变量:
您还可以通过使用自定义字符串参数使其更加动态
_registered
和
_registered_compare
. 那么您的查询可能是:
$args = array(
\'orderby\' => \'login\',
\'order\' => \'ASC\',
\'_registered\' => date( \'Y-m-d\' ),
\'_registered_compare\' => \'>=\',
);
$query = new WP_User_Query( $args );
其中:
/**
* Add support for the custom \'_registered\' and \'_registered_compare\'
* string input parameters in WP_User_Query().
*
* @see http://wordpress.stackexchange.com/a/160826/26350
* @param WP_User_Query The current WP_User_Query instance
*/
function wpse_registered_filter( $q )
{
if( isset( $q->query_vars[\'_registered\'] )
&& isset( $q->query_vars[\'_registered_compare\'] )
&& is_string( $q->query_vars[\'_registered_compare\'] )
)
{
// Input:
$registered = $q->query_vars[\'_registered\'];
$compare = $q->query_vars[\'_registered_compare\'];
// Init:
$available_compares = array( \'=\', \'<\', \'>\', \'<=\', \'>=\', \'!=\' );
// Default compare:
if( ! in_array( $compare, $available_compares, TRUE ) )
$compare = \'=\';
// Modify query:
global $wpdb;
$q->query_where .= $wpdb->prepare(
" AND {$wpdb->users}.user_registered {$compare} \'%s\' ",
$registered
);
}
}
add_action( \'pre_user_query\', \'wpse_registered_filter\' );
方法#3:手动SQL:响应下面的注释,这是一个如何手动编写SQL的示例:
global $wpdb;
$sql = $wpdb->prepare(
"SELECT ID FROM {$wpdb->users} WHERE {$wpdb->users}.user_registered >= \'%s\' ",
current_time( \'mysql\' )
);
$uids = $wpdb->get_col( $sql );