2015-12-07 43 views
3

我嘗試定製wp_dropdown_users功能:變化WP下拉用戶 - 過濾器由用戶角色

<form method="post" > 
<?php foreach ($_POST as $key => $val): ?> 
<?php endforeach ?> 
<?php wp_dropdown_users(array('selected' => ($_POST['user'] ? : get_current_user_id()))); ?> 
    <input type="submit" value="go" /> 
</form> 

下拉場應該只列出所有用戶與角色"device" ('role' => 'device')。 我怎樣才能認識到它?任何人都請幫助我? 非常感謝提前!

回答

0

即使它沒有在wp_dropdown_users功能記錄你可以通過args中的「角色」參數。您可以傳遞WP_User_Query::prepare_query()接受的任何參數。

因此,例如,echo wp_dropdown_users(array('role' => 'administrator'));將顯示在管理員角色的用戶的下拉列表。在你的情況,你會有

<?php echo wp_dropdown_users(
    array(
     'selected' => ($_POST['user'] ? : get_current_user_id()), 
     'role' => 'device' 
    ) 
); ?> 

這假定你有角色'設備',這是不是默認的用戶。不要忘記回聲。沒有它,wp_dropdown_users不會顯示任何東西。

+0

非常感謝詹姆斯。這幫助我! – andrassberlin

+1

不適用於我(WP 4.5) - wordpres過濾參數 – AndreyP

1

這是可能接受的答案曾在一個點上,但它似乎再沒有。 Wordpress在到達查詢之前過濾出「角色」參數。我已經修改了它一下原因在於:

$users_with_role = implode(",", get_users (array ('fields' => 'id', 'role' => 'customer'))); 

wp_dropdown_users(array(
    'selected' => ($_POST['user'] ? : get_current_user_id()), 
    'include_selected' => true, 
    'include' => $users_with_role 
)); 
0

創建過濾器:

function filter_wp_dropdown_users_args($query_args) { 
    $query_args['role'] = 'device'; 
    return $query_args; 
} 

,並使用它:

add_filter('wp_dropdown_users_args', 'filter_wp_dropdown_users_args'); 
wp_dropdown_users(); 
remove_filter('wp_dropdown_users_args', 'filter_wp_dropdown_users_args');