Привет @ Джон:
Если я правильно понимаю ваш вопрос (поскольку вы привели технический пример того, что вы пытались, но не описали, какого конечного результата вы пытались достичь, я не уверен) кажется, что вы делать поиск пользователя? Если да, то ниже, я думаю, вам нужно.
<?php
// Load WordPress, but only for standalone example use
include '../wp-load.php';
// Make sure the database object is available
global $wpdb;
// Get value entered by the user
$keyword = $_GET['keyword'];
// This would be used in your code; the percent would confuse prepare() below
$keyword = "%{$keyword}%";
// Join each meta field as a separate join and reference the meta_key in the join
// prepare() below replaces "%s" with a quoted string value
$sql =<<<SQL
SELECT
users.user_nicename AS user_name,
bizname.meta_value AS business_name,
bizdesc.meta_value AS business_description
FROM
{$wpdb->users} AS users
INNER JOIN {$wpdb->usermeta} AS bizname
ON bizname.user_id=users.ID
AND bizname.meta_key='business_name'
INNER JOIN {$wpdb->usermeta} AS bizdesc
ON bizdesc.user_id=users.ID
AND bizdesc.meta_key='business_description'
WHERE 1=0
OR bizname.meta_value LIKE %s
OR bizdesc.meta_value LIKE %s
SQL;
// User prepare() to avoid SQL injection hacks
$sql = $wpdb->prepare($sql,$keyword,$keyword);
// Finally, get yer results!
$users = $wpdb->get_results($sql);
echo "<ul>";
foreach($users as $user) {
echo "<li>User= {$user->user_name}, Business= {$user->business_name}:{$user->business_description}</li>";
}
echo "<ul>";
Выше приведен полный рабочий пример, который вы можете скопировать в файл в корне вашего веб-сайта и назвать его как /test.php
, позволяя увидеть его работу, используя URL-адрес, подобный следующему:
http://example.com/test.php?keyword=Accounting
Конечно, это может быть меньше производительности в разы, чем при использовании нескольких запросов, из-за встроенных в WordPress систем кэширования запросов, но это невозможно определить без некоторого тестирования.
Надеюсь, это поможет.
-Mike
P.S. Между прочим, я предполагаю, что вы не знали об этом, но поскольку ваш предыдущий вопрос, очевидно, не получил большой любви к WordPress, и не имел этого, я упомяну веб-сайт WordPress Ответы который является дочерним сайтом StackOverflow. Множество энтузиастов WordPress готовы ответить на вопросы, связанные с WordPress. Мой опыт работы со StackOverflow заключается в том, что у них есть одни из лучших разработчиков в Интернете, но лишь немногие из них имеют конкретный опыт разработки с WordPress, так что вы в конечном итоге найдете здесь людей, которые пытаются ответить на них. Вопросы MySQL, не зная схемы базы данных WordPress и не зная лучших практик WordPress. Спросите на WordPress Ответы, и я думаю, вы улучшите качество ответов на свои вопросы, связанные с WordPress.