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