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?– KoryCommented May 7, 2020 at 18:21 -
get_role( $role )->capabilities
e.gget_role( 'author' )->capabilities
? ..