如何获取所有具有作者角色能力的用户?

时间: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() 用于从代码中的任何用户角色获取功能。

结束

相关推荐

About Wordpress capabilities

我知道WordPress是博客引擎的最佳选择,通过一些插件,如Advance Custom Field,WP可以成为一个很棒的CMS。但它仍然有利于出版商将内容推送给用户。现在我的处境相当严峻。我的朋友想使用WP作为一个引擎,用户可以贡献他们的帖子,其他人可以查看它。是否可以使用WP我可以创建自定义主题(&a);插件可以做到这一点,但当用户在插件上放置很多东西(页面和帖子)时,它对性能有好处吗?