사용자가 특정 역할에 있는지 확인하는 방법은 무엇입니까?
6 대답
- 투표
-
- 2010-12-08
현재 사용자에게만 필요한 경우
current_user_can()
는 역할과 기능을 모두 허용합니다..업데이트 : 역할 이름을
current_user_can()
에 전달하는 것이 더 이상 올바르게 작동하지 않을 수 있습니다 ( # 22624 ).대신 사용자 역할을 확인할 수 있습니다.$user = wp_get_current_user(); if ( in_array( 'author', (array) $user->roles ) ) { //The user has the "author" role }
If you only need this for current user
current_user_can()
accepts both roles and capabilities.UPDATE: Passing a role name to
current_user_can()
is no longer guaranteed to work correctly (see #22624). Instead, you may wish to check user role:$user = wp_get_current_user(); if ( in_array( 'author', (array) $user->roles ) ) { //The user has the "author" role }
-
이 게시물에 대한 답변은 오래 전이지만 누군가 여기에 오면 문서를 다시 한번보십시오. current_user_can ()-> "역할 이름을 current_user_can ()에 전달하지 마십시오.올바르게 작동합니다 (# 22624 참조). 대신 AppThemes에서 함께 결합한 사용자 역할 확인 기능을 사용해 볼 수 있습니다. "(http://codex.wordpress.org/Function_Reference/current_user_can)I know this post is answered a long time ago but if someone happens to get here... look at the documentation once more for current_user_can() -> "Do not pass a role name to current_user_can(), as this is not guaranteed to work correctly (see #22624). Instead, you may wish to try the check user role function put together by AppThemes." (http://codex.wordpress.org/Function_Reference/current_user_can)
- 10
- 2014-01-28
- bestprogrammerintheworld
-
^if 문에 괄호가 누락되었습니다.^ There is a bracket missing in the if statement
- 1
- 2015-06-04
- Aajahid
-
@Aajahid 편집 :)@Aajahid edited :)
- 1
- 2015-06-04
- Rarst
-
다중 사이트를 사용하지 않는 경우에도 여전히`current_user_can ( 'editor')`의 단순성을 선호합니다.If not using multisite, I still prefer the simplicity of `current_user_can('editor')`
- 1
- 2020-01-25
- Jules
-
- 2012-06-11
사용자 ID를 사용하여 사용자 역할을 얻는 방법을 찾고있었습니다.다음은 제가 생각 해낸 것입니다.
function get_user_roles_by_user_id( $user_id ) { $user = get_userdata( $user_id ); return empty( $user ) ? array() : $user->roles; }
그런 다음
is_user_in_role()
함수를 다음과 같이 구현할 수 있습니다.function is_user_in_role( $user_id, $role ) { return in_array( $role, get_user_roles_by_user_id( $user_id ) ); }
I was looking for a way to get a user's role using the user's id. Here is what I came up with:
function get_user_roles_by_user_id( $user_id ) { $user = get_userdata( $user_id ); return empty( $user ) ? array() : $user->roles; }
Then, an
is_user_in_role()
function could be implemented like so:function is_user_in_role( $user_id, $role ) { return in_array( $role, get_user_roles_by_user_id( $user_id ) ); }
-
사용자에게 첫 번째 역할을 할당하면 잘 작동합니다.works fine for me to get the first role assigned to a user.
- 1
- 2012-10-10
- Q Studio
-
사용자에게 할당 된 모든 역할은 어떻습니까?What about all the roles assigned to the user?
- 0
- 2017-04-10
- Sahu V Kumar
-
@Vishal Kumar는 사용자에게 할당 된 모든 역할에 대해 확인합니다.@Vishal Kumar this will check against all roles assigned to the user.
- 1
- 2017-04-10
- Stephen M. Harris
-
이 기능은 존재하지 않습니다. 단지 오래된 것인지 또는 무엇인지 확실하지 않지만 위의 답변 또는 아래에 게시 한 답변을 사용해야합니다.This function does not exist, not sure if it was just old or what, but you should use the answer above or the one I posted below
- 0
- 2017-11-16
- sMyles
-
- 2017-11-16
새 사용자 개체를 만들 수도 있습니다.
$user = new WP_User( $user_id ); if ( ! empty( $user->roles ) && is_array( $user->roles ) && in_array( 'Some_role', $user->roles ) ) { return true; }
get_user_roles_by_user_id
버전이 제거되었는지 확실하지 않지만 더 이상 사용 가능한 기능이 아닙니다.You can also just create a new user object:
$user = new WP_User( $user_id ); if ( ! empty( $user->roles ) && is_array( $user->roles ) && in_array( 'Some_role', $user->roles ) ) { return true; }
Not sure what version
get_user_roles_by_user_id
was removed in, but it's no longer an available function.-
이것은 WP_User 클래스의 다른 메서드를 호출해야 할 때 편리합니다.This is handy when I have to call other methods of the WP_User class.
- 0
- 2019-09-25
- Justin Waulters
-
- 2017-11-28
다음은 유연성을 높이기 위해 사용자와 역할을 수락하는 함수입니다.
<프리> functionmy_has_role ($ user,$ role) { $ roles=$ user-> roles; returnin_array ($ role,(array) $ user-> roles); } if (my_has_role ($ user,'some_role')) { //할 일 }Here is a function that accepts a user and role for greater flexibility:
function my_has_role($user, $role) { $roles = $user->roles; return in_array($role, (array) $user->roles); } if(my_has_role($user, 'some_role')) { //do stuff }
-
- 2019-10-02
사용자 개체
로 현재 사용자 ID를 얻을 수 있습니다. <사전> <코드>/** * user_id에 주어진 역할 또는 기능이 있으면true를 반환합니다. * * @paramint $ user_id * @param string $ role_or_cap 역할 또는 기능 * * @return 부울 */ functionmy_has_role ($ user_id,$ role_or_cap) { $ u=새로운 \ WP_User ($ user_id); //$ u- > roles 수락 된 답변에서와 같이 잘못된 방법입니다. $ roles_and_caps=$ u- >get_role_caps ();//모든 역할을 가져 오기 위해 여러 검사를 수행하므로 올바른 방법 if (isset ($ roles_and_caps [$ role_or_cap]) 및 $ roles_and_caps [$ role_or_cap]===true) { true를 반환하십시오. } }$ user- > roles
에서 역할을 호출해도 모든 역할이 반환되지는 않습니다.사용자에게 역할이나 기능이 있는지 확인하는 올바른 방법은 다음과 같습니다.(이것은 wp 버전 2.0.0 이상에서 작동합니다.) 다음 함수는 사용자 ID로 작동합니다.$ current_user_id=get_current_user_id ();
Calling roles on User Object
$user->roles
do not return all the roles. The correct way to find if the user has a role or capability is following. (This works in wp version 2.0.0 and greater.) The following function works with user id you can get the current user id by$current_user_id = get_current_user_id();
/** * Returns true if a user_id has a given role or capability * * @param int $user_id * @param string $role_or_cap Role or Capability * * @return boolean */ function my_has_role($user_id, $role_or_cap) { $u = new \WP_User( $user_id ); //$u->roles Wrong way to do it as in the accepted answer. $roles_and_caps = $u->get_role_caps(); //Correct way to do it as wp do multiple checks to fetch all roles if( isset ( $roles_and_caps[$role_or_cap] ) and $roles_and_caps[$role_or_cap] === true ) { return true; } }
-
- 2020-07-27
이것은 오래된 게시물이지만 모든 WordPress 버전에서 작동하는 하나의 보편적 인 기능입니다.
if(!function_exists('is_user')): function is_user ($role=NULL, $user_id=NULL) { if(empty($user_id)){ $user = wp_get_current_user(); } else { if(is_numeric($user_id) && $user_id == (int)$user_id) { $user = get_user_by('id', (int)$user_id); } else if(is_string($user_id) && $email = sanitize_email($user_id)) { $user = get_user_by('email', $email); } else { return false; } } if(!$user) return false; return in_array( $role, (array)$user->roles, true ) !== false; } endif;
이 기능을 사용하면 로그인 한 사용자를 역할 또는 사용자 ID/이메일로 검색 할 수 있습니다.사용자 역할 배열도 허용합니다.
This is old post but here is one universal function what working on the all WordPress versions.
if(!function_exists('is_user')): function is_user ($role=NULL, $user_id=NULL) { if(empty($user_id)){ $user = wp_get_current_user(); } else { if(is_numeric($user_id) && $user_id == (int)$user_id) { $user = get_user_by('id', (int)$user_id); } else if(is_string($user_id) && $email = sanitize_email($user_id)) { $user = get_user_by('email', $email); } else { return false; } } if(!$user) return false; return in_array( $role, (array)$user->roles, true ) !== false; } endif;
With this function you can search logged in user by role or by user ID/email. Also accept user roles array.
현재 사용자의 역할에 따라 사용자 프로필 페이지의 필드 레이블에 다른 텍스트를 표시해야하는 매우 구체적인 요구 사항이 있습니다.현재 사용이 "저자"인지 확인하는 방법을 알 수없는 것 같습니다.
다음과 같은 기능을 찾고 있습니다.
이것은 매우 간단하다고 생각하지만 답변없이 너무 오래 검색했기 때문에 여기에 게시 할 것이라고 생각했습니다.