我尝试自定义wp_dropdown_users
功能:
<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 :(得分:1)
接受的答案可能在某一点上起作用,但似乎不再存在。 Wordpress在到达查询之前过滤掉'role'参数。由于这个原因,我对它进行了一些修改:
$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
));
答案 1 :(得分:0)
即使未在wp_dropdown_users
函数中记录,您也可以在args中传递'role'参数。您可以传递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
就不会显示任何内容。
答案 2 :(得分: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');