query – ¿Cómo puedo consultar a todos los usuarios que se registraron hoy?

Pregunta:

Estoy tratando de usar meta_query para devolver todos los usuarios que se han registrado hoy:

$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();

Sin embargo, esto no parece funcionar. Qué me estoy perdiendo ?

Respuesta:

Hace unos meses, actualicé el Codex para get_users() y WP_User_Query , con respecto al soporte de date_query en la fecha de registro del usuario , en WordPress 4.1+.

Luego también agregué un ejemplo simple sobre cómo encontrar usuarios que se registraron durante las últimas 12 horas.

Pero la pregunta actual es cómo encontrar usuarios que se registraron hoy .

Simplemente podríamos usar una cadena de fecha relativa:

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

$query = new WP_User_Query( $args );

que generará la siguiente consulta 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 ;

También podríamos establecer los parámetros de year , month y day explícitamente:

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

$query = new WP_User_Query( $args );

que generará:

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 ;

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım