As funções são armazenadas na variável global $wp_roles
.
A função ideal éget_editable_roles()
de/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;
}
A parte "editável" é porque oferece a outros plugins a chance de filtrar a lista caso alguém que não seja administrador tenha 'edit_users'
privilégio (e, portanto, 'admin' precisa ser removido da lista, caso contrário o usuário pode se tornar administrador). Os plug-ins de gerenciamento de funções usados para criar funções personalizadas são os que usariam esse filtro. Caso contrário, essa função é essencialmente get_roles()
(que não existe) .
Presumivelmente, seu plug-in oferecerá apenas a página de configurações em questão para alguém que possui recursos no nível de administrador, como 'manage_options'
e é basicamente um administrador com acesso a todas as funções, portanto o filtro não deve afetá-lo.
Também existe owp_dropdown_roles()
que fornece as funções como <option>
campos para uma <select>
lista (embora as caixas de seleção provavelmente funcionem melhor em muitos cenários em que você escolhe quem tem acesso a algo) .