WordPress 사이트에서 현재 사용 가능한 역할 목록을 가져 오시겠습니까?


38

WordPress 플러그인을 작성할 때 종종 사이트의 역할이 특정 기능이나 컨텐츠에 액세스 할 수있는 옵션을 설정해야합니다. 이를 위해 플러그인 개발자는 옵션에 사용할 사이트에 존재하는 역할 목록을 가져와야합니다. 사용자 지정 역할을 만들 수 있으므로 기본 역할 만 사용할 수 있다고 가정 할 수 없습니다.

목록을 가져 오는 가장 좋은 방법은 무엇입니까?


6
참고 :이 질문은 원래 wp-hackers 메일 링리스트에서 Ryan Bilesky가 요청했으며 저에게 답했습니다. 사람들이 Google에 물어볼 수있는 가장 좋은 연습 문제가 분명하기 때문에 여기에 추가했습니다.
jerclarke

1
Hey @Jeremy Clarke- 여기에 참여하게되어 정말 기쁩니다. 여기에 우리가 찾고있는 것들이 있습니다. 모범 사례를 공개 할 수있는 일반적인 질문과 관련된 답변 명성!
MikeSchinkel

답변:


47

역할은 전역 변수에 저장됩니다 $wp_roles.

이상적인 함수는get_editable_roles() 로부터/wp-admin/includes/user.php

function get_editable_roles() {
    global $wp_roles;

    $all_roles = $wp_roles->roles;
    $editable_roles = apply_filters('editable_roles', $all_roles);

    return $editable_roles;
}

"편집" 는 다른 플러그인에게 관리자가이 이외의 경우 누군가에 목록을 필터링 할 수있는 기회를 제공하기 때문에 부분은 'edit_users'(사용자가 스스로 관리 할 수있는 다른 것을 목록에서 제거 할 수있어 '관리의 요구) 권한을. 사용자 지정 역할을 만드는 데 사용되는 역할 관리 플러그인은 해당 필터를 사용하는 역할입니다. 그렇지 않으면이 함수는 본질적으로 get_roles() 존재하지 않는 것 입니다.

아마도 플러그인은 관리자 수준의 기능을 가지고 'manage_options'있고 기본적으로 모든 역할에 대한 액세스 권한이있는 관리자 에게 문제의 설정 페이지를 제공 하므로 필터는 영향을 미치지 않습니다.

또한wp_dropdown_roles() 목록에 <option>대한 필드 역할을 제공하는 기능도 있습니다 (누가 무언가에 액세스 할 수있는 사람을 선택하는지 많은 시나리오에서 확인란이 더 잘 작동 할 수 있음) .<select>


3
참고 :;) 나는이 나는 그것의 찬성 편견 해요 그래서 패치의 일부, WP보다 안전하게하기로 함수를 생성
jerclarke

14

이 시도:

function get_role_names() {

global $wp_roles;

if ( ! isset( $wp_roles ) )
    $wp_roles = new WP_Roles();

return $wp_roles->get_names();
}

PS heh, 그 설명과 답장이 너무 빠릅니다. :)


0

다음은 플러그인 또는 기능이없는 역할 목록을 찾는 방법입니다. http://screencast.com/t/uaWsGLAR3Sh


6
이 링크가 질문에 대한 답변을 제공 할 수 있지만 여기에 답변의 필수 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않을 수 있습니다.
Gabriel

0

다국어 사이트가있는 분은 기능

function wp_roles_array() {
    $editable_roles = get_editable_roles();
    foreach ($editable_roles as $role => $details) {
        $sub['role'] = esc_attr($role);
        $sub['name'] = translate_user_role($details['name']);
        $roles[] = $sub;
    }
    return $roles;
}

다음과 같이 지역화 된 배열을 반환합니다 (역할 이름은 슬로바키아어로되어 있음).

Array
(
    [0] => Array
        (
            [role] => administrator
            [name] => Administrátor
        )

    [1] => Array
        (
            [role] => editor
            [name] => Editor
        )

    [2] => Array
        (
            [role] => author
            [name] => Autor
        )

    [3] => Array
        (
            [role] => contributor
            [name] => Prispievateľ
        )
)

0

WordPress에서 기존의 모든 사용자 역할과 각 역할의 기능을 얻는 방법입니다. 화면에 인쇄하지 않으려면 마지막 행을 생략하십시오. 2 행의 $ roles 변수는 필요한만큼 사용할 수 있도록 사용자 및 기능 배열을 보유합니다. 반환 된 배열의 예는 아래를 참조하십시오.

global $wp_roles;
$roles = $wp_roles->roles; 

// print it to the screen
echo '<pre>' . print_r( $roles, true ) . '</pre>';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.