更改wp下拉用户 - 按用户角色过滤

时间:2015-12-07 20:40:44

标签: php wordpress

我尝试自定义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')的所有用户。 我怎么才能意识到这一点?有人请帮帮我吗? 非常感谢提前!

3 个答案:

答案 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');