WordPress가 특정 기능을 가진 사용자를 나열하는 방법
"publish_posts"와 같이 특정 기능을 가진 사용자만 나열할 수 있는 방법이 있습니까?
WP는 기능을 user_meta 테이블에 직렬화된 문자열로 저장하므로 특정 기능을 가진 사용자를 선택하려면 meta_query 매개 변수와 함께 WP_User_Query를 사용할 수 있습니다.또한 사용자 메타에서 다중 사이트 설치 기능 이름을 사용할 수 있는 가용성으로 인해 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
누군가에게 도움이 되기를 바랍니다:) 참고 [vars]는 배열(vars)로 대체될 수 있습니다. [] 짧은 구문을 좋아하지만 php 5.4부터만 지원됩니다.
모든 사용자를 검색하면 됩니다.그 다음에 각각의 앞다리로 그것들을 뒤집니다.사용자가 특정 기능을 가지고 있는지 확인한 다음 사용자를 다른 배열로 밀어 넣은 후 해당 배열을 사용하여 나열합니다.
$all_users = get_users();
$specific_users = array();
foreach($all_users as $user){
if($user->has_cap('specific_capability')){
$specific_users[] = $user;
}
}
참고: 그 당시에는 빠르고 더러운 해결책인 것처럼 보였지만, 지금은 질문을 작성하는 것을 추천합니다.제가 이 문제를 조사할 시간이 없기 때문에, 만약 반대표를 던진 사람이 문의자에게 실질적인 도움이 되는 답변을 반대표를 던지지 않고 이 질문에 답을 해준다면 좋을 것 같습니다.
WP_User_Query로 사용자를 나열할 수 있지만, 사용 권한이 아닌 다른 역할만 반환할 수 있는 경우에는 이미 원하는 역할일 수 있습니다!워드프레스 문서에서 다양한 역할을 볼 수 있는 사이트도 있습니다.
먼저 해당 기능이 포함된 모든 역할을 받아야 합니다.그런 다음 해당 기능이 포함된 역할을 기준으로 사용자를 검색할 수 있습니다.
$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()" 조건도 추가해야 합니다.https://developer.wordpress.org/reference/functions/user_can/
언급URL : https://stackoverflow.com/questions/7695609/how-wordpress-can-list-users-with-specific-capabilities
'programing' 카테고리의 다른 글
Tensorflow에서 그래프의 모든 Tensor의 이름을 가져옵니다. (0) | 2023.10.30 |
---|---|
면도기 뷰에서 .css 파일을 참조하는 방법은 무엇입니까? (0) | 2023.10.30 |
내 SQL 복제에 즉각적인 데이터 일관성이 있습니까? (0) | 2023.10.30 |
C에 포인터를 사용하는 컨스트럭트 (0) | 2023.10.30 |
XPath 사용 - Windows 이벤트 로그를 검색하기 위해 시작하거나 포함하는 기능 (0) | 2023.10.30 |