如何获取所有具有作者角色能力的用户? 时间:2017-10-02 作者:Anand 我需要获取所有作者用户的列表(具有作者功能)get\\u users允许获取具有角色的用户,但如果用户使用author角色进行筛选,则会跳过具有admin和editor角色的用户(但他们也可以创建帖子)。所以我需要一些其他方法来获取所有具有作者角色功能的用户(他们可以来自管理员、编辑或任何其他具有作者功能的自定义角色)更准确地说,需要所有具有“publish\\u posts”功能的用户。 4 个回复 SO网友:birgire 以下是使用收集角色的方法publish_posts 能力:$roles__in = []; foreach( wp_roles()->roles as $role_slug => $role ) { if( ! empty( $role[\'capabilities\'][\'publish_posts\'] ) ) $roles__in[] = $role_slug; } 然后我们可以查询具有以下角色的用户:if( $roles__in ) $users = get_users( [ \'roles__in\' => $roles__in, \'fields\' => \'ids\' ] ); 我们可能需要为大量用户分页。也可以循环few 用户并检查:user_can( $user, \'publish_posts\' ) 参见文档here. SO网友:Sid 基本上,有3个角色有权发布帖子-“管理员”、“编辑”和;“作者”,除非您添加任何自定义角色。因此,您可以在get\\u users函数中指定这3个数组。类似这样:get_users( array( \'role__in\' => array(\'administrator\', \'editor\', \'author\'), ) ); 这将为您提供数组中这些角色的用户详细信息,方便您使用。希望这有帮助。谢谢 SO网友:GeeC 我意识到这是一个老生常谈的问题,但如果你想直接或通过角色获得所有具有给定功能的用户,那么当前的顶级答案(由@birgire提供)将非常低效,尤其是如果你有很多用户的话。答案的第一部分只需稍加改进,即可让所有用户在一次呼叫中访问get_users();$roles = array( \'publish_posts\' ); foreach( wp_roles()->roles as $role_slug => $role ) { if( ! empty( $role[\'capabilities\'][\'publish_posts\'] ) ) { $roles[] = $role_slug; } } $user_ids = get_users( array( \'role__in\' => $roles, \'fields\' => \'ids\' ) ); 只需初始化$roles 如果阵列具有您正在检查的功能,则将包括直接具有该功能的所有用户。 SO网友:Mostafa Soufi 使用get_role() 用于从代码中的任何用户角色获取功能。 结束 文章导航