How can I get ALL the capabilities of an existing user role (eg. Author) ? I'll be using it to quickly duplicate an existing user role, then create a new role then assign or remove capabilities to a new custom role.
1 Answer
I suggest not to mess with the existing roles and capabilities in its default, it might help you some trouble when you will have a bunch of custom roles and capabilities in the future.
To answer your question, I will have an example: I need new role/user group that has almost an Administrator but don't have the the capability to edit plugins and the theme, to do that:
Let's say you would like to copy the existing capabilities of Administrator, do it by:
$admin_role_set = get_role( 'administrator' )->capabilities;
You can create a new user role by using add_role, see the handbook for more details. We can then use the list of capabilities that we have from #1 by using:
$role = 'content_admin'; $display_name = 'Content Admin'; add_role( $role, $display_name, $admin_role_set );
By checking the Roles and Capabilities list from the handbook, we will be needing to remove
edit_plugins
&edit_themes
capabilities, we can achieve that by usingremove_cap()
:remove_cap( 'content_admin', 'edit_plugins' ); remove_cap( 'content_admin', 'edit_themes' );
-
1In the 3rd step that you outline, shouldn't the role supplied to the
remove_cap
method be 'content_admin' instead of 'editor' if you're continuing the example of removing the the capability to edit plugins and the theme for the newly created custom role?– KoryMay 7, 2020 at 18:21 -
get_role( $role )->capabilities
e.gget_role( 'author' )->capabilities
? ..