J'ai un site avec beaucoup d'utilisateurs et beaucoup d'entre eux ont le même nom de famille. Je souhaite recevoir les courriels de tous les utilisateurs portant le même nom de famille (IE: Smith) et ayant un message lié à un terme de taxonomie particulier (IE: Baseball).
Jusqu'à présent, j'ai ce code qui fonctionne très bien pour obtenir tous les utilisateurs avec le même nom de famille (grâce à Mike Schinkel ). Je crains d’utiliser la fonction JOIN, mais j’apprends et j’en ai vraiment besoin le plus tôt possible, j’ai donc 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 grandement apprécié et je vais le payer en avant. Merci.
Bonjour @ 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 );