Conformément au titre, ce que je veux faire est d'exécuter une requête personnalisée (à l'aide de WP-Cron) exécutée une fois par jour pour rechercher les utilisateurs enregistrés exactement 360 jours avant la date actuelle (pas besoin de temps, mais de date) et rassembler leur ID
. J'ai ceci:
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
Où le peu en majuscules représente le peu je ne sais pas quoi faire :) Toute aide très appréciée.
J'ai jeté un coup d'œil dans la classe WP_User_Query
et prend en charge une requête WP_Date_Query
à la date d'enregistrement de l'utilisateur.
Nous pourrions donc utiliser:
$query = new WP_User_Query( $args );
ou simplement:
$users = get_users( $args );
où:
$args = [
'fields' => 'ID',
'number' => 8,
'date_query' => [
[ 'before' => '359 days ago midnight' ],
[ 'after' => '360 days ago midnight', 'inclusive' => true ],
]
];
Cela génère la requête SQL suivante ( vue développée ):
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;
où aujourd'hui est 2015-08-05
.
Il semble que nous devrions mettre à jour le Codex sur get_users()
, en ce qui concerne l’argument date_query
.
Utilisation
$wpdb->get_results("SELECT *, (DATEDIFF(NOW(),user_registered)) AS daydiff FROM {$wpdb->users} WHERE 'daydiff' = 360");