Here how register a role specifically for a plugin and add plugin specific capabilities to selected core roles
function my_plugin_install() {
// add a new role for plugin with some capabilities
add_role('my_plugin_role', 'My Plugin Role', array(
'manage_my_plugin' => true, // plugin specific capability
'read' => true // core capability
));
// add plugin capabilities for some standard roles
$roles = array('administrator', 'editor', 'author');
$roles_obj = new WP_Roles();
foreach ($roles as $role_name) {
$roles_obj->add_cap($role_name, 'manage_my_plugin' );
}
}
function my_plugin_unistall() {
remove_role( 'my_plugin_role' );
$roles = array('administrator', 'editor', 'author');
$roles_obj = new WP_Roles();
foreach ($roles as $role_name) {
$roles_obj->remove_cap($role_name, 'manage_my_plugin' );
}
}
In the plugin file put:
register_activation_hook(__FILE__, 'my_plugin_install' );
register_uninstall_hook(__FILE__, 'my_plugin_unistall');
To check in the current logged user has your plugin capabilities use :
if ( current_user_can('manage_my_plugin') ) {
// do something
}