web-dev-qa-db-ja.com

現在の日付けから360日で登録したユーザーを取得する

タイトル通り、私がやりたいことは、(WP-Cronを使用して)現在の日付のちょうど360日前に登録したユーザーをチェックするために1日に1回実行されるカスタムクエリを実行することです。そして彼らのIDを集める。私はこれを持っています:

global $wpdb;
$sql = $wpdb->prepare(
    "SELECT * FROM {$wpdb->users} 
     WHERE {$wpdb->users}.user_registered = CURRENT-DATE-MINUS-360-DAYS";
);
$userdata = HOW-DO-I-GET-THE-RESULTS-IN-AN-ARRAY

Capsの中のビットがそのビットを表しているところで私は何をすべきかわかりません:)どんな助けにも感謝します。

1
Kev

I WP_User_Queryクラスを覗き見し、ユーザー登録日のWP_Date_Queryクエリをサポートします。

だから我々は使用することができます:

$query = new WP_User_Query( $args );

または単に:

$users = get_users( $args );

ここで、

$args = [
    'fields'     => 'ID',
    'number'     => 8,
    'date_query' => [
        [ 'before' => '359 days ago midnight' ],
        [ 'after'  => '360 days ago midnight', 'inclusive' => true ],
   ] 
];

これにより、次のSQLクエリが生成されます(展開ビュー)。

SELECT wp_users.ID 
    FROM wp_users 
    WHERE 1=1 
        AND ( 
                wp_users.user_registered >= '2014-08-10 00:00:00' 
            AND       
                wp_users.user_registered < '2014-08-11 00:00:00' 
        ) 
    ORDER BY user_login ASC 
    LIMIT 10;

今日は2015-08-05です。

date_query引数に関して、 get_users() 関数のCodexを更新する必要があるようです。

2
birgire

つかいます

$wpdb->get_results("SELECT *, (DATEDIFF(NOW(),user_registered)) AS daydiff FROM {$wpdb->users} WHERE 'daydiff' = 360");
0
Trang