Main Content

Clone the WordPress Administrator Role

WordPress Admin IconIf you’re looking to create new roles in WordPress, and you’re open to using a plugin, I recommend User Role Editor. It works very well.

However, sometimes you don’t need a plugin. If you want to clone the Administrator role and all the capabilities you don’t need a plugin for that.

Here’s the code to create a new user with all Administrative capabilities. This can be added to your theme’s functions.php file and it will run when you load any page.

Once the user is created, you can delete the code as it’s no longer needed.


/**
* Create custom WordPress Role 'Webmaster' with all Administrator capabilities.
* Remember to delete this code when done as it's only needed once.
*/
$customRoleName = 'Webmaster';
$customRoleID = 'webmaster'; // No spaces, all lowercase
$createCustomRole = add_role(
$customRoleID,
__( $customRoleName ),
array(
'activate_plugins' => true,
'add_users' => true,
'assign_campaign_terms' => true,
'assign_give_campaigns_terms' => true,
'assign_give_forms_terms' => true,
'assign_give_payments_terms' => true,
'copy_posts' => true,
'create_roles' => true,
'create_users' => true,
'delete_campaign' => true,
'delete_campaign_terms' => true,
'delete_campaigns' => true,
'delete_donation' => true,
'delete_donations' => true,
'delete_event_categories' => true,
'delete_events' => true,
'delete_forums' => true,
'delete_funder' => true,
'delete_give_campaigns' => true,
'delete_give_campaigns_terms' => true,
'delete_give_campaignss' => true,
'delete_give_forms' => true,
'delete_give_forms_terms' => true,
'delete_give_formss' => true,
'delete_give_payments' => true,
'delete_give_payments_terms' => true,
'delete_give_paymentss' => true,
'delete_locations' => true,
'delete_others_campaigns' => true,
'delete_others_donations' => true,
'delete_others_events' => true,
'delete_others_forums' => true,
'delete_others_give_campaignss' => true,
'delete_others_give_formss' => true,
'delete_others_give_paymentss' => true,
'delete_others_locations' => true,
'delete_others_pages' => true,
'delete_others_posts' => true,
'delete_others_recurring_events' => true,
'delete_others_replies' => true,
'delete_others_topics' => true,
'delete_pages' => true,
'delete_plugins' => true,
'delete_posts' => true,
'delete_private_campaigns' => true,
'delete_private_donations' => true,
'delete_private_give_campaignss' => true,
'delete_private_give_formss' => true,
'delete_private_give_paymentss' => true,
'delete_private_pages' => true,
'delete_private_posts' => true,
'delete_published_campaigns' => true,
'delete_published_donations' => true,
'delete_published_give_campaignss' => true,
'delete_published_give_formss' => true,
'delete_published_give_paymentss' => true,
'delete_published_pages' => true,
'delete_published_posts' => true,
'delete_recurring_events' => true,
'delete_replies' => true,
'delete_roles' => true,
'delete_themes' => true,
'delete_topics' => true,
'delete_users' => true,
'edit_campaign' => true,
'edit_campaign_terms' => true,
'edit_campaigns' => true,
'edit_dashboard' => true,
'edit_donation' => true,
'edit_donations' => true,
'edit_event_categories' => true,
'edit_events' => true,
'edit_files' => true,
'edit_forums' => true,
'edit_funder' => true,
'edit_give_campaigns' => true,
'edit_give_campaigns_terms' => true,
'edit_give_campaignss' => true,
'edit_give_forms' => true,
'edit_give_forms_terms' => true,
'edit_give_formss' => true,
'edit_give_payments' => true,
'edit_give_payments_terms' => true,
'edit_give_paymentss' => true,
'edit_locations' => true,
'edit_others_campaigns' => true,
'edit_others_donations' => true,
'edit_others_events' => true,
'edit_others_forums' => true,
'edit_others_give_campaignss' => true,
'edit_others_give_formss' => true,
'edit_others_give_paymentss' => true,
'edit_others_locations' => true,
'edit_others_pages' => true,
'edit_others_posts' => true,
'edit_others_recurring_events' => true,
'edit_others_replies' => true,
'edit_others_topics' => true,
'edit_pages' => true,
'edit_plugins' => true,
'edit_posts' => true,
'edit_private_campaigns' => true,
'edit_private_donations' => true,
'edit_private_give_campaignss' => true,
'edit_private_give_formss' => true,
'edit_private_give_paymentss' => true,
'edit_private_pages' => true,
'edit_private_posts' => true,
'edit_published_campaigns' => true,
'edit_published_donations' => true,
'edit_published_give_campaignss' => true,
'edit_published_give_formss' => true,
'edit_published_give_paymentss' => true,
'edit_published_pages' => true,
'edit_published_posts' => true,
'edit_recurring_events' => true,
'edit_roles' => true,
'edit_theme_options' => true,
'edit_themes' => true,
'edit_users' => true,
'export' => true,
'export_charitable_reports' => true,
'export_give_reports' => true,
'import' => true,
'install_plugins' => true,
'install_themes' => true,
'level_0' => true,
'level_true,' => true,
'level_true,0' => true,
'level_2' => true,
'level_3' => true,
'level_4' => true,
'level_5' => true,
'level_6' => true,
'level_7' => true,
'level_8' => true,
'level_9' => true,
'list_roles' => true,
'list_users' => true,
'manage_bookings' => true,
'manage_campaign_terms' => true,
'manage_categories' => true,
'manage_charitable_settings' => true,
'manage_give_campaigns_terms' => true,
'manage_give_forms_terms' => true,
'manage_give_payments_terms' => true,
'manage_give_settings' => true,
'manage_links' => true,
'manage_options' => true,
'manage_others_bookings' => true,
'moderate_comments' => true,
'promote_users' => true,
'publish_campaigns' => true,
'publish_donations' => true,
'publish_events' => true,
'publish_forums' => true,
'publish_give_campaignss' => true,
'publish_give_formss' => true,
'publish_give_paymentss' => true,
'publish_locations' => true,
'publish_pages' => true,
'publish_posts' => true,
'publish_recurring_events' => true,
'read' => true,
'read_campaign' => true,
'read_donation' => true,
'read_funder' => true,
'read_give_campaigns' => true,
'read_give_forms' => true,
'read_give_payments' => true,
'read_others_locations' => true,
'read_private_campaigns' => true,
'read_private_donations' => true,
'read_private_events' => true,
'read_private_forms' => true,
'read_private_give_campaignss' => true,
'read_private_give_formss' => true,
'read_private_give_paymentss' => true,
'read_private_locations' => true,
'read_private_pages' => true,
'read_private_posts' => true,
'read_private_recurring_events' => true,
'read_private_replies' => true,
'read_private_topics' => true,
'remove_users' => true,
'restrict_content' => true,
'switch_themes' => true,
'unfiltered_html' => true,
'unfiltered_upload' => true,
'update_core' => true,
'update_plugins' => true,
'update_themes' => true,
'upload_event_images' => true,
'upload_files' => true,
'ure_create_capabilities' => true,
'ure_create_roles' => true,
'ure_delete_capabilities' => true,
'ure_delete_roles' => true,
'ure_edit_roles' => true,
'ure_manage_options' => true,
'ure_reset_roles' => true,
'view_charitable_sensitive_data' => true,
'view_give_campaigns_stats' => true,
'view_give_forms_stats' => true,
'view_give_payments_stats' => true,
'view_give_reports' => true,
'view_give_sensitive_data' => true,
'wdf_add_fundraisers' => true,
'wdf_edit_settings' => true,
'wdf_manage_all_fundraisers' => true,
'wdf_manage_pledges' => true,
)
);
if ( null !== $createCustomRole ) {
echo 'Yay! New role' . $customRoleName . ' created!';
}
else {
echo 'Oh… The ' . $customRoleName . ' role already exists, please delete the code from your site.';
}

When the new user is created, this gives them all the capabilities. If you know what you’re doing, then you’re good. If you’re not sure, use a plugin which gives you a better interface for managing capabilities.

This code also includes some custom capabilities for plugins I had installed at the time. So BuddyPress, bbPress, Events Manager Pro, some donation plugins. It’s not the cleanest, but it works.

Want to remove a custom user role? That’s actually really easy with the remove_role function.

Want to see what capabilities the administrator, or any role, currently have on your site? For that, use the get_role function. I took the output of that function, did some find/replace and then created the code that’s above.

It’s important to note that this code was created May 2016 and if WordPress adds new capabilities, those won’t be added automatically. If you add new plugins with custom capabilities, those won’t be added either. That’s where a plugin comes in handy.


Leave a Reply