Interrogation adresses e-mail pour une liste des utilisateurs avec le même nom de famille?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/15434

  •  16-10-2019
  •  | 
  •  

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.

Était-ce utile?

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
scroll top