我可以将两个角色传递给GET_USERS函数吗?

时间:2012-09-04 作者:Claire

我想获得角色学术和学生的用户。我已经尝试使用下面的代码(传递了一系列角色,但显示了所有用户,因此显然不起作用。

$roles=array(\'academic\',\'student\');
$args =array(\'role\'=>$roles);
$users=get_users( $args );

foreach ($users as $user) {
    echo \'<li>\' . $user->user_email . \'</li>\';
}

2 个回复
最合适的回答,由SO网友:Tomas Buteler 整理而成

我认为使用get\\u users函数不可能做到这一点。从什么Codex 意味着,不能将数组传递给角色参数。但编写代码以摆脱这种限制应该相当容易。

尝试以下操作:

function filter_two_roles($user) {
    $roles = array(\'academic\',\'student\');
    return in_array($user->roles[0], $roles);
}

$users = get_users(\'fields=all_with_meta\');
// Sort by last name
usort($users, create_function(\'$a, $b\', \'if($a->last_name == $b->last_name) { return 0;} return ($a->last_name > $b->last_name) ? 1 : -1;\'));
// Iterate through users, filtering out the ones which don\'t have the roles we want 
foreach(array_filter($users, \'filter_two_roles\') as $user) {
    // Your code
}
要求用户使用参数字段=all\\u with\\u meta非常强大,WP似乎映射了在用户对象上执行print\\r时甚至没有显示的索引。这就是为什么我们可以使用名字或姓氏对它们进行排序,如上所示(我实际上从an older answer of mine).

让我们知道进展如何?

SO网友:majick

循环浏览角色并合并结果。。。这将适用于任意数量的角色。

$roles = array(\'academic\',\'student\');
$users = array();
foreach ($roles as $role) {
    $args = array(\'role\'=>$role);
    $usersofrole = get_users($args);
    $users = array_merge($usersofrole,$users);
}

foreach ($users as $user) {
    echo \'<li>\' . $user->user_email . \'</li>\';
}

结束

相关推荐

在Functions.php中创建“无文件”页面模板

(所谓“页面模板”,我指的是具有\"Template Name\" header 可在管理页面的“模板”下拉字段中选择。)在多个实例中,我构建了页面模板,可以通过挂接到\\u内容或pre\\u get\\u帖子或类似的内容来完成。这让我想知道是否有一种方法可以在functions.php 或者不创建主题文件本身的插件。我想这样做的原因:在我想到的场景中,我通常只是复制页面。php几乎一字不差。这意味着将来对页面的任何更改。php需要制作两次。随着儿童主题的更新,这更加令人痛苦</我喜欢“模板”字段U