0

基本上,我需要按他们居住的城市订购 WordPress 用户列表。我有一个城市的自定义用户元字段,我的查询工作正常,但查询列出了所有没有填写的人开头的城市,因为它在订单的开头放置了空白字段。

我需要弄清楚如何只选择和显示在城市字段中给出非空白值的用户。不幸的是,我发现自己被难住了。

关于如何做到这一点的任何想法?此外,如果有人知道使用 wp_user_query 来订购自定义用户元字段的方法,而不是这种混乱,我会全神贯注。

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$limit = 10;
$offset = ($paged - 1) * $limit;
$key = 'city';

$sql = "SELECT SQL_CALC_FOUND_ROWS {$wpdb->users}.* FROM {$wpdb->users}

INNER JOIN {$wpdb->usermeta} wp_usermeta ON ({$wpdb->users}.ID = wp_usermeta.user_id)
INNER JOIN {$wpdb->usermeta} wp_usermeta2 ON ({$wpdb->users}.ID = wp_usermeta2.user_id)
WHERE 1=1
    AND wp_usermeta.meta_key = 'wp_capabilities'
    AND CAST(wp_usermeta.meta_value AS CHAR) LIKE '%\"subscriber\"%'
    AND wp_usermeta2.meta_key = '$key'
ORDER BY wp_usermeta2.meta_value ASC
LIMIT $offset, $limit";

$site_users = $wpdb->get_results($sql);

$found_rows = $wpdb->get_var("SELECT FOUND_ROWS();");

foreach ($site_users as $site_user) { 
    // user info here
}
4

1 回答 1

0

尝试类似的东西

...
WHERE 1=1
    AND wp_whatever.name_of_city IS NOT NULL
    AND LENGTH(wp_whatever.name_of_city) > 0
    AND wp_usermeta.meta_key = 'wp_capabilities'
...
于 2012-06-19T18:59:31.970 回答