Interrogation adresses e-mail pour une liste des utilisateurs avec le même nom de famille?
Question
J'ai un site avec de nombreux utilisateurs et beaucoup d'entre eux ont le même nom de famille. Je veux obtenir les e-mails de tous les utilisateurs ayant le même nom de famille (IE: Smith) qui a un poste lié à un terme de taxonomie particulière. (IE: Baseball)
Jusqu'à présent, j'ai ce code qui fonctionne très bien à obtenir tous les utilisateurs ayant le même nom (grâce à Mike Schinkel ). Je suce à l'aide de la fonction JOIN mais j'apprends et je vraiment besoin de ce plus tôt que tard, donc je besoin d'aide.
$sql =<<<SQL
SELECT
{$wpdb->users}.user_email,
{$wpdb->usermeta}.meta_value
FROM
{$wpdb->users}
LEFT JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID = {$wpdb->usermeta}.user_id
WHERE 1=1
AND {$wpdb->users}.user_status = '0'
AND {$wpdb->usermeta}.meta_key = 'last_name'
AND {$wpdb->usermeta}.meta_value = 'Smith'
SQL;
$usersemails = $wpdb->get_results($sql);
header('Content-type:text/plain');
print_r($usersemails);
Votre temps est très apprécié et je vais payer avant. Merci.
La solution
Salut @Holidaymaine:
Voici la requête que vous recherchez:
<?php
include( '../wp-load.php' );
$sql =<<<SQL
SELECT DISTINCT
u.user_email AS user_email,
um.meta_value AS user_lastname
FROM
{$wpdb->users} AS u
LEFT JOIN {$wpdb->usermeta} AS um ON u.ID = um.user_id
LEFT JOIN {$wpdb->posts} AS p ON u.ID = p.post_author
LEFT JOIN {$wpdb->term_relationships} AS tr ON p.ID = tr.object_id
LEFT JOIN {$wpdb->term_taxonomy} AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
LEFT JOIN {$wpdb->terms} AS t ON tt.term_id = t.term_id
WHERE 1=1
AND u.user_status = '0'
AND um.meta_key = 'last_name'
AND um.meta_value = '%s'
AND t.slug = '%s'
SQL;
$sql = $wpdb->prepare( $sql, 'Smith', 'baseball' );
$usersemails = $wpdb->get_results( $sql );
header( 'Content-type:text/plain' );
print_r( $usersemails );
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange