collègues codeurs! J'ai un mal à rejoindre des tables (ing).
J'ai beaucoup d'utilisateurs sur mon site et beaucoup d'entre eux ont les mêmes noms de famille. J'essaie de recevoir leurs courriels par leur nom de famille. WP stocke les e-mails dans la table des utilisateurs et les noms d'utilisateur dans la console usermeta. 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. le jour. C'est ce que j'ai après 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 s'il vous plaît aider? Merci.
Bonjour @Holidaymaine :
Vous ne savez pas trop où vous vous trompez, mais essayez plutôt ce qui suit: il s'agit d'un fichier autonome test.php
que vous pouvez déposer à la racine de votre site Web et charger dans votre navigateur http://yoursite.com/test.php
(en supposant que vous remplacez yoursite.com
par le domaine de votre site! Notez également que j’ajoute un WHERE {$wpdb->usermeta}.meta_key = 'last_name'
pour vous assurer de ne pas obtenir d’enregistrements inattendus):
<?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);
Vous pouvez le faire via l'API, la recherche des utilisateurs a été améliorée en 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
Les préfixes importent.