您是否可以使用GET_USERS()返回比当前用户更高角色的用户?

时间:2021-05-06 作者:Kyle Dearle

我使用get\\u users()返回具有指定角色的用户列表。这样做的目的是在前端生成一个下拉列表,在评论中提及其他用户,这与https://wordpress.org/plugins/comment-mention/.

问题是,如果当前用户处于较低的角色(如作者),则get\\u users()不会返回较高的角色(如管理员)。换句话说,我需要一个较低的用户,以便能够返回具有较高角色的用户。

我意识到get\\u users()阻止从此处返回更高角色的用户:get_users / WP_User_Query returns empty when logged out

但我想知道是否有办法解决这个问题。这就是我目前获取用户列表的方式

<?php
// Set arguments.
$args = array(
    \'fields\' => array(\'user_login\'),
    \'role__in\' => array(\'administrator\',\'editor\',\'author\'),
);

// Get usernames.
$results = get_users( $args );
?>
这里需要注意的是,期望的最终结果是返回所有用户名的数组

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

我遇到的问题的原因与;“工具集访问”;来自工具集的插件。com插件组。

默认情况下,此插件有一个选项,不允许用户编辑角色高于自己的其他用户。这会影响广泛的WordPress功能,例如get_users()wp_dropdown_users().

可以通过插件设置禁用该功能,请参见下面的屏幕截图:enter image description here

请注意,您应该考虑自己的用例,因为这将允许具有较低功能的用户(可以编辑用户)编辑高于他们的用户。在我的情况下,我不会给我的低级用户这种类型的访问权限。

SO网友:anton

您写道,您需要生成一个包含用户的下拉列表。正如我所想的那样——与角色无关。

wp_dropdown_users() 也许有帮助。它将为您生成一个下拉列表。刚刚检查了我的wp安装,它仍然会返回所有用户的列表,无论我是作为管理员还是订阅者登录。

wp_dropdown_users() 有很多属性,在您的情况下可能很有用-包括、排除用户、按角色显示用户、如果未选择用户,则显示默认值等等

请注意,默认情况下,此函数回显html选择列表,如果要在变量中获取html代码,则属性“echo”应设置为false

wp_dropdown_users code reference

相关推荐