WordPress如何列出具有特定功能的用户

Mer*_*kos 4 wordpress wordpress-plugin

有没有办法只列出具有特定功能的用户,例如"publish_posts"?

Ogi*_*vis 9

您可以只检索所有用户.然后在foreach中循环遍历它们.检查用户是否具有特定功能,然后将用户推送到另一个阵列并使用该阵列列出它们.

$all_users = get_users();
$specific_users = array();

foreach($all_users as $user){

    if($user->has_cap('specific_capability')){
        $specific_users[] = $user;
    }

}
Run Code Online (Sandbox Code Playgroud)

注意: 当时这似乎是一个很好的快速和肮脏的解决方案,但现在我建议写一个查询.我没有时间为你调查这个问题,所以如果一个人贬低这个问题就可以回答这个问题,而不是低估一个对查询者有实际帮助的答案,那就太好了.

  • 我知道这是一个老问题,你已经得到了帮助,但我认为那些希望列出用户能力的人可能会觉得这很有用. (2认同)

Mik*_*oot 9

要选择具有某些功能的用户,可以将WP_User_Query与meta_query参数一起使用,因为WP将功能存储为user_meta表中的序列化字符串.还要记住,由于具有多站点安装功能,用户meta中的名称类似于wp_table_prefix_capabilities.

global $wpdb;
// meta-key name
$capabilities_field_name=$wpdb->prefix.'capabilities';
//array as argument for our query
$qargs=[
     'role' => ['Customer'], // use this if you need to query by role at the same time
     'meta_query'=>
         [
            'relation' => 'OR', // optional if you'll need to select more than
                                //  one capability just add this and create same array
                               // as down below describing what are you looking for 
             [
                'key' => $capabilities_field_name,
                'value' => 'your_role_name',
                'compare' => 'LIKE',
             ],

       // here could be same array [key,value,compare]... as above with another capability      
       // but you'll need to add extra argument showing relationship between them see above 'relation parameter'

         ],
     'number'=> -1 // to select all users
 ];

$usersQuery=new WP_User_Query($qargs); // instantiate UserQuery with $qargs

$users=$usersQuery->get_results(); // get all results as array of WPUser objects
Run Code Online (Sandbox Code Playgroud)

希望它有助于某人:)注意[vars]可以替换为数组(vars),我喜欢[]短语法,但它只支持PHP 5.4.

  • 只是让其他人知道-这个答案绝对优于其他答案。经过测试,它比通过整个用户数据库查询更流畅。我绝对推荐这个解决方案,特别是如果你有很多用户。 (2认同)

Ano*_*ous 4

您可以使用WP_User_Query列出用户,但据我所知,您只能返回不同的角色,而不能返回权限,也许这已经是您想要的了!还有一个网站,您可以在其中查看WordPress 文档中的不同角色。

  • 在 WordPress 4.1+ 中,您可以使用“角色”搜索参数来搜索功能。例如: $user_query = new WP_User_Query( array( 'role' => 'publish_posts' ) ); 然而,用户必须具有添加到他们的能力(例如,他们不能从角色“继承”该能力)。所以这不能满足很多需求,但可以满足特定的需求。(例如,我有“员工”的能力,该能力未添加到任何角色,而是按每个用户授予) (2认同)