Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WordPress如何列出具有特定功能的用户_Wordpress - Fatal编程技术网

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

WordPress如何列出具有特定功能的用户,wordpress,Wordpress,有没有办法只列出具有特定功能的用户,例如我们的“发布帖子”?您可以列出具有特定功能的用户,但您只能返回不同的角色,而不能返回权限,这可能已经是您想要的了!还有一个网站,您可以在wordpress文档中看到不同的内容。您可以检索所有用户。然后在foreach中循环通过它们。检查用户是否具有特定功能,然后将用户推送到另一个阵列,并使用该阵列列出他们 $all_users = get_users(); $specific_users = array(); foreach($all_users as

有没有办法只列出具有特定功能的用户,例如我们的“发布帖子”?

您可以列出具有特定功能的用户,但您只能返回不同的角色,而不能返回权限,这可能已经是您想要的了!还有一个网站,您可以在wordpress文档中看到不同的内容。

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

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

foreach($all_users as $user){

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

}
注意:
在当时,这似乎是一个快速而肮脏的解决方案,但现在我建议编写一个查询。我没有时间为您调查这一点,因此,如果投票人拒绝回答这个问题,而不是拒绝回答一个对查询人有实际帮助的答案,那就太好了。

要选择具有特定功能的用户,您可以使用带有meta\u查询参数的WP\u User\u Query,因为WP将功能作为序列化字符串存储在user_元表中。 还请记住,由于具有多站点安装功能的可用性,用户元中的名称看起来像wp_table_prefix_功能

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
希望对某人有所帮助:)
注意[vars]可以替换为array(vars),我喜欢[]简短的语法,但它仅在PHP5.4之后才受支持。

您首先需要获取包含该功能的所有角色。然后,您可以根据包含该功能的角色搜索用户

$roles = array();
foreach ( wp_roles()->roles as $role_name => $role_obj ) {
    if ( ! empty( $role_obj['capabilities']['my_capability_name'] ) ) {
        $roles[] = $role_name;
    }
}

$users = get_users( array( 'role__in' => $roles ) );
  • 如果另一个角色对该功能具有“拒绝”功能,并且您的用户可以包含多个角色,则这不起作用。如果是这样,那么在用户之间循环时,您还需要添加“user_can()”条件
我已经知道角色和功能;)谢谢我需要的帮助是如何列出作者;)感谢lotIn WordPress 4.1+您可以使用“角色”搜索参数来搜索功能。例如:$user_query=newwp_user_query(数组('role'=>'publish_posts'));但是,用户必须向其添加功能(例如,他们不能从角色“继承”功能)。所以这对很多需求都不起作用,但对特定的需求会起作用。(例如,我有一个没有添加到任何角色中的“staff”功能,但它是基于每个用户授予的)我知道这是一个老问题,您已经得到了帮助,但我认为希望在功能上列出用户的人可能会发现这一点很有用。非常感谢您的回答:)嗯。所以如果站点上有5000个用户。一个人必须循环浏览5000条记录,并为每个用户检查用户是否具有特定的功能?我同意对于更大的用户群来说,这既不理想也不可扩展。最好使用SQL进行过滤。然而,当时我认为这是一个很好的快速修复。我请你用适当的问题回答这个问题。如果你不/不能/不会,我会找时间的。@DominikSpäte谢谢你的回复。我在代码示例中添加了数字1和固定的$。只是让其他人知道-这个答案绝对优于其他答案。经过测试,它比通过整个用户数据库进行查询更加流畅。我绝对推荐这个解决方案,特别是如果你有很多用户的话。