仲間のコーダー!私はテーブルを結合するのに苦労しています。
私のサイトにはたくさんのユーザーがいて、その多くは同じ姓を持っています。私は彼らのラストネームで彼らのEメールを受け取ろうとしています。 WPはusersテーブルに電子メールを格納し、usermetaにユーザー名を格納しています。私はJOINを使用して必要なものを取得しようとしていますその日。これは私が4.5時間後に持っているものです。
$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'");
何かお手伝いいただければ幸いです。ありがとう。
こんにちは@ Holidaymaine:
どこが間違っているのかわかりませんが、代わりに自己完結型のtest.php
ファイルである以下を試してください。Webサイトのルートにドロップし、ブラウザにhttp://yoursite.com/test.php
(yoursite.com
をサイトのドメインに置き換えたと仮定します!また、WHERE {$wpdb->usermeta}.meta_key = 'last_name'
に追加して、予期しないレコードを取得しなかったことを確認してください):
<?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);
あなたはAPIを介してこれを行うことができ、ユーザー検索は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
する必要があります:
SELECT $wpdb->users.user_email, $wpdb->usermeta.meta_value
接頭辞が重要です。