2012-06-19 80 views
0

基本上,我需要在他們居住的城市訂購一個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 
} 

回答

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' 
... 
相關問題