Los roles se almacenan en la variable global $wp_roles
.
La función ideal esget_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 'edit_users'
privilegios (y, por lo tanto, 'admin' deba eliminarse de la 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) .
Presumiblemente, su complemento solo ofrecerá la página de configuración en cuestión a alguien que tenga capacidades de nivel de administrador 'manage_options'
y que sea básicamente un administrador con acceso a todas las funciones, por lo que el filtro no debería afectarlo.
También existe elwp_dropdown_roles()
que le brinda los roles como <option>
campos para una <select>
lista (aunque es probable que las casillas de verificación funcionen mejor en muchos escenarios en los que elige quién tiene acceso a algo) .