Techniques » WordPress Create Custom Roles and Capabilities
So you want to add a custom Role to your WordPress site to add more flexibility when assigning users their role, what do you do? Simply add a role, with a few lines of code in your theme’s functions.php file, using WordPress’ add_role() function, as defined below.
1 | add_role( $role_name, $display_name, $capabilities ); |
The example below adds a role of Video Manager with a custom cabability of ‘manage videos’.
1 | add_role( 'video_manager, 'Video Manager', array( 'manage_videos' ) ); |
NOTE: Once you add this code to your functions.php file and view any page on your site to make the role addition, you can and should comment it out so that it doesn’t run on every page view.
Now, how do we use this new role with the new capability you ask? Simply use the WordPress current_user_can() function to check the user’s capability.
1 2 3 | if ( current_user_can( 'manage_videos' ) ) { // let them manage those videos! } |
This technique can be combined with our WordPress Role Capability Restriction technique to add even more capabilities to your new custom role. Simply create your new role then use it in the get_role() function call detailed in our technique.


tnx, Peter
But isn’t there some kind of hook/action the where add_role should be put in?
It seems like a bit of a hack this way.
http://core.trac.wordpress.org/browser/tags/3.0.5/wp-includes/capabilities.php
line: 136
So I think you can leave it uncommented.
Checking against a custom capability, like :
if ( current_user_can( ‘manage_videos’ ) )
does not work here in WP 3.0.1
add_role seems to write the name of the ROLE to the wp_capabilities fields in wp_usermeta, not the name of the custom CAPABILITY.
Came across this?
Thx.
I do this occasionally when I have one off things to do.