WordPress 플러그인을 작성할 때 종종 사이트의 역할이 특정 기능이나 컨텐츠에 액세스 할 수있는 옵션을 설정해야합니다. 이를 위해 플러그인 개발자는 옵션에 사용할 사이트에 존재하는 역할 목록을 가져와야합니다. 사용자 지정 역할을 만들 수 있으므로 기본 역할 만 사용할 수 있다고 가정 할 수 없습니다.
목록을 가져 오는 가장 좋은 방법은 무엇입니까?
WordPress 플러그인을 작성할 때 종종 사이트의 역할이 특정 기능이나 컨텐츠에 액세스 할 수있는 옵션을 설정해야합니다. 이를 위해 플러그인 개발자는 옵션에 사용할 사이트에 존재하는 역할 목록을 가져와야합니다. 사용자 지정 역할을 만들 수 있으므로 기본 역할 만 사용할 수 있다고 가정 할 수 없습니다.
목록을 가져 오는 가장 좋은 방법은 무엇입니까?
답변:
역할은 전역 변수에 저장됩니다 $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>
다음은 플러그인 또는 기능이없는 역할 목록을 찾는 방법입니다. http://screencast.com/t/uaWsGLAR3Sh
다국어 사이트가있는 분은 기능
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ľ
)
)