Question

autres! codeurs Je l'avoir mal REJOIGNEZ tables (ing).

J'ai beaucoup d'un des utilisateurs sur mon site et beaucoup d'entre eux ont les mêmes noms de famille. Je suis en train de faire leurs e-mails par leur nom de famille. WP stocke les e-mails dans la table des utilisateurs et des noms d'utilisateur dans le usermeta et j'ai essayé d'utiliser JOIN pour obtenir ce que je veux, mais je ne comprends pas comment cela fonctionne et je suis sur le point d'abandonner pour la journée. Voilà ce que j'ai au bout de 4,5 heures.

$usersemails = $wpdb->get_results("SELECT users.user_email, usermeta.meta_value 
FROM $wpdb->users
LEFT JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id 
    WHERE user_status = '0' 
    AND meta_value = 'Smith'");

Toute aide est appréciée, alors pouvez-vous aider? Merci.

Était-ce utile?

La solution

Salut @Holidaymaine :

Je ne sais pas où vous faites mal, mais essayez ce qui suit à la place qui est un fichier test.php autonome, vous pouvez tomber dans la racine de votre site Web et la charge dans votre navigateur avec http://yoursite.com/test.php (en supposant que vous remplacez yoursite.com avec votre son site ! domaine aussi, notez comment j'ajouter dans un WHERE {$wpdb->usermeta}.meta_key = 'last_name' pour vous assurer ne pas obtenir les dossiers que vous n'attendiez pas):

<?php
/*
Filename: test.php
*/

include('wp-load.php');

$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);

Autres conseils

Vous pouvez le faire via l'API, la recherche de l'utilisateur se est améliorée 3.1

$search = new WP_User_Query(array(
             'meta_value' => 'Lastname',
             'fields' => array('user_email'),
                ));

var_dump($search->get_results());

SELECT users.user_email, usermeta.meta_value

Devrait être:

SELECT $wpdb->users.user_email, $wpdb->usermeta.meta_value

matière Prefixes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top