如何查询今天注册的所有用户?

时间:2012-05-08 作者:mike23

我想用meta_query 要返回今天已注册的所有用户,请执行以下操作:

$args = array(
    \'meta_query\' => array(
        array(
            \'key\' => \'user_registered\',
            \'value\' => date(\'Y-m-d\'),
            \'compare\' => \'=\',
            \'type\' => \'DATE\'
        )
    )
);

$query = new WP_User_Query( $args );
$users = $query->get_results();
但这似乎不起作用。我错过了什么?

2 个回复
最合适的回答,由SO网友:birgire 整理而成

几个月前,我更新了get_users()WP_User_Query, 关于date_query 在WordPress 4.1+中支持用户注册日期。

然后我还添加了simple example 关于如何查找过去12小时内注册的用户。

但目前的问题是如何找到今天注册的用户。

我们可以简单地使用相对日期字符串:

$args = [
    \'date_query\' => [
        [ \'after\'  => \'today\', \'inclusive\' => true ],
    ] 
];

$query = new WP_User_Query( $args );
将生成以下SQL查询:

SELECT SQL_CALC_FOUND_ROWS wp_users.* FROM wp_users WHERE 1=1 AND ( 
    wp_users.user_registered >= \'2015-11-06 00:00:00\'
) ORDER BY user_login ASC ;
我们还可以设置year, monthday 参数明确:

$args = [
    \'date_query\' => [
        [   
            \'year\'  => current_time( \'Y\' ),
            \'month\' => current_time( \'m\' ),
            \'day\'   => current_time( \'d\' ),
        ],
    ] 
];

$query = new WP_User_Query( $args );
这将产生:

SELECT SQL_CALC_FOUND_ROWS wp_users.* FROM wp_users WHERE 1=1 AND ( 
    ( 
        YEAR( wp_users.user_registered ) = 2015 
        AND MONTH( wp_users.user_registered ) = 11 
        AND DAYOFMONTH( wp_users.user_registered ) = 6 
    )
) ORDER BY user_login ASC ;

SO网友:Stephen Harris

现场user_registered 不是中的*_usermeta 表,但*_users.

在使用时,似乎也没有任何合适的钩子来更改SQL语句WP_User_Query. 似乎需要使用直接SQL语句。

另一个(较小的)复杂情况是,注册日期存储为日期时间。

function wpse51485_get_users_registered_on( $date=\'\' ){
    global $wpdb;

    if( empty($date) )
        $date = date(\'Y-m-d\');

    $morning = new DateTime($date. \' 00:00:00\');
    $night = new DateTime($date.\' 23:59:59\'); 
    $m = $morning->format(\'Y-m-d H:i:s\');
    $n = $night->format(\'Y-m-d H:i:s\');

    $sql = $wpdb->prepare("SELECT wp_users.* FROM wp_users WHERE 1=1 AND CAST(user_registered AS DATE) BETWEEN %s AND %s ORDER BY user_login ASC",$m,$n);

    $users = $wpdb->get_results($sql);

    return $users;
 }

结束

相关推荐

自定义日期更改器POST_DATE=>将来-错过计划错误

我正在为我的网站开发一个定制的事件调度器,让人们可以轻松地进入并设置文章在将来发布。我之所以要覆盖正常的Wordpress功能,是因为我想让选择日期变得非常容易,因为布道应该只在周日发布。因此,我有一个自定义下拉日历,只允许您选择一个月的星期日。无论如何,我的问题是,我所有的帖子在管理面板中都给出了一个“错过时间表”的错误。我可以通过使用“post\\u status”=>“future”在页面上列出帖子来绕过这个问题,但这有点“黑客”。。。为什么这段代码会给我那个“错过计划”的错误?functio