2017-10-28 53 views
3

我有一個自定義後類型institutions是關聯用戶。獲取與自定義後類型相關聯的所有用戶在WordPress

每當我添加一個新用戶,我可以選擇哪些機構,他/她也藉助Advanced Custom Fields插件相關。

既然設立完成後,我試圖顯示與我正在觀看(single-institutions.php

機構我不能使用WP_Query()相關聯的所有用戶的列表,因爲它不會讓我得到用戶和我不能使用wp_list_authors(),因爲它不會允許meta_query

所以我留下來使用老式的mysql查詢。

但我不知道如何着手,因爲我需要查詢,以獲得正確的結果,對多個表。

wp_users: ID 
wp_usermeta 
    user_id 
    meta_key: institution 
    meta_value: a:1:{i:0;s:4:"2875";} // "2875" is the ID of the institution the user is associated with 

如何通過直接mysql查詢來實現此目的?

編輯:我已經切換到WP_User_Query()相反,我不知道它的存在。不過,我不確定要放什麼meta_value

$args = array(
    'role'   => 'Author', 
    'order'   => 'ASC', 
    'orderby'  => 'display_name', 
    'who'   => 'authors', 
    'exclude'  => [1, 7], 
    'count_total' => true, 
    'meta_key'  => 'institution', 
    'meta_value'  => $post->ID 
); 

// The User Query 
$user_query = new WP_User_Query($args); 

// The User Loop 
if (! empty($user_query->results)) { 
    foreach ($user_query->results as $user) { 
    echo $user->display_name . '<br>'; 
    } 
} else { 
    // no users found 
} 

眼下,沒有東西顯示出來。如果我從查詢中刪除「meta_value」,則與所有機構相關聯的所有用戶都會出現在所有頁面上。

如何縮小它符合我目前的觀察機構ID($post->ID)?

這是meta_value列的wp_usermeta表中的值。它是連載的。我最終需要做些什麼特別的檢索ID嗎?

a:1:{i:0;s:4:"2875";} 

回答

2

您應該使用WP_User_Query這是類似WP_Query。更具體地說,在你的情況下,看看Custom Field Parameters併發送該機構的ID

+0

謝謝,這真的很有幫助。不知道有'WP_User_Query()'存在。但是,我不確定要爲'meta_value'使用什麼 - 如果您有請看,我已更新了我的帖子。 – Halnex

+0

它工作。我不得不使用'LIKE'代替'='代替'meta_compare'。謝謝。 – Halnex

+1

@Halnex啊,是的,我錯過了這是一個序列化數組的事實。請注意以下幾點注意事項: 1)如果您有大量數據並可能影響網站性能,那麼使用LIKE運算符執行元查詢可能會很昂貴。這通常很好,但如果你遇到問題,這可能是需要看的東西。 2)你應該在'meta_value'中加雙引號,例如''meta_value'=>'''。$ post-> ID。'「''。這樣當你打算選擇「9」等時,你將避免選擇像「19」這樣的值。 –

相關問題