编写一个自定义的mysql查询,以通过自定义用户meta字段订购wordpress用户

编写一个自定义的mysql查询,以通过自定义用户meta字段订购wordpress用户

问题描述:

基本上,我需要在他们居住的城市订购一个WordPress用户列表。我有一个用于城市的自定义用户meta字段,已经使查询正常工作,但查询列出了每个未开始填写城市的人,因为它在订单开始时放置了空白字段。编写一个自定义的mysql查询,以通过自定义用户meta字段订购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 
} 

尝试像

... 
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' 
...