web-dev-qa-db-fra.com

WP SQL requête multiple où clause

J'essaie d'obtenir les utilisateurs qui se sont inscrits après une heure spécifique (cette affaire $ aujourd'hui) et pour lesquels le champ newsletter est true et le compte false C’est ce que j’ai eu jusqu’à présent, mais le résultat est toujours 0.

$new_users_newsletter = $wpdb->get_results(
    "SELECT *
    FROM $wpdb->users
    RIGHT JOIN $wpdb->usermeta
    ON $wpdb->users.ID = $wpdb->usermeta.user_id
    WHERE ($wpdb->users.user_registered >= '$today'
        AND $wpdb->usermeta.meta_key LIKE 'newsletter' AND $wpdb->usermeta.meta_value LIKE 'true'
        AND $wpdb->usermeta.meta_key LIKE 'account' AND $wpdb->usermeta.meta_value LIKE 'false')
    GROUP BY $wpdb->users.ID"
);
1
CiprianD

Vous pouvez essayer ceci avec WP_User_Query à la place:

$args = array (
    'meta_query'    => array(
        array(
            'key'   => 'newsletter',
            'value' => 'true',
        ),
        array(
            'key'   => 'account',
            'value' => 'false',
        ),
    ),
    'date_query'    => array(
        array(  
            'after'     => '2015-01-13 00:00:00',
            'inclusive' => true,
        ),          
     ),
);

$user_query = new WP_User_Query( $args );

où je suppose que vos méta-valeurs utilisateur sont des chaînes booléennes , c'est-à-dire 'true' et 'false'.

2
birgire