Los roles se almacenan en la variable global $wp_roles
.
La función ideal es 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;
}
La parte "editable" se debe a que ofrece a otros complementos la posibilidad de filtrar la lista en caso de que alguien que no sea administrador tenga el privilegio 'edit_users'
(y, por lo tanto, es necesario eliminar 'admin' de lista, de lo contrario ese usuario podría hacerse administrador). Los complementos de administración de roles utilizados para crear roles personalizados son los que usarían ese filtro. De lo contrario, esta función es esencialmente get_roles()
(que no existe) .
Es de suponer que su complemento solo ofrecerá la página de configuración en cuestión a alguien que tenga capacidades de nivel de administrador como 'manage_options'
y es básicamente un administrador con acceso a todos los roles, por lo que el filtro no debería afectarle.
También hay wp_dropdown_roles()
que le da los roles como <option>
campos para una lista <select>
(aunque es probable que las casillas funcionen mejor en muchos escenarios en los que está eligiendo quién tiene acceso a algo) .