Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
The following code will reset a WordPress default role to it's default capabilities. Note: these defaults are for WordPress 3.5, any other versions might have different defaults. To be safe, only use this code on WordPress 3.5. Warning: This cannot be undone! The role, in it's current state, is removed and recreated with the WordPress default ro…
<?php
/*
* example usage: $results = reset_role_WPSE_82378( 'subscriber' );
* per add_role() (WordPress Codex), $results "Returns a WP_Role object
* on success, null if that role already exists."
*
* possible $role values:
* 'administrator'
* 'editor'
* 'author'
* 'contributor'
* 'subscriber'
*/
function reset_role_akrr( $role ) {
$default_roles = array(
'administrator' => array(
'switch_themes' => 1,
'edit_themes' => 1,
'activate_plugins' => 1,
'edit_plugins' => 1,
'edit_users' => 1,
'edit_files' => 1,
'manage_options' => 1,
'moderate_comments' => 1,
'manage_categories' => 1,
'manage_links' => 1,
'upload_files' => 1,
'import' => 1,
'unfiltered_html' => 1,
'edit_posts' => 1,
'edit_others_posts' => 1,
'edit_published_posts' => 1,
'publish_posts' => 1,
'edit_pages' => 1,
'read' => 1,
'level_10' => 1,
'level_9' => 1,
'level_8' => 1,
'level_7' => 1,
'level_6' => 1,
'level_5' => 1,
'level_4' => 1,
'level_3' => 1,
'level_2' => 1,
'level_1' => 1,
'level_0' => 1,
'edit_others_pages' => 1,
'edit_published_pages' => 1,
'publish_pages' => 1,
'delete_pages' => 1,
'delete_others_pages' => 1,
'delete_published_pages' => 1,
'delete_posts' => 1,
'delete_others_posts' => 1,
'delete_published_posts' => 1,
'delete_private_posts' => 1,
'edit_private_posts' => 1,
'read_private_posts' => 1,
'delete_private_pages' => 1,
'edit_private_pages' => 1,
'read_private_pages' => 1,
'delete_users' => 1,
'create_users' => 1,
'unfiltered_upload' => 1,
'edit_dashboard' => 1,
'update_plugins' => 1,
'delete_plugins' => 1,
'install_plugins' => 1,
'update_themes' => 1,
'install_themes' => 1,
'update_core' => 1,
'list_users' => 1,
'remove_users' => 1,
'add_users' => 1,
'promote_users' => 1,
'edit_theme_options' => 1,
'delete_themes' => 1,
'export' => 1,
),
'editor' => array(
'moderate_comments' => 1,
'manage_categories' => 1,
'manage_links' => 1,
'upload_files' => 1,
'unfiltered_html' => 1,
'edit_posts' => 1,
'edit_others_posts' => 1,
'edit_published_posts' => 1,
'publish_posts' => 1,
'edit_pages' => 1,
'read' => 1,
'level_7' => 1,
'level_6' => 1,
'level_5' => 1,
'level_4' => 1,
'level_3' => 1,
'level_2' => 1,
'level_1' => 1,
'level_0' => 1,
'edit_others_pages' => 1,
'edit_published_pages' => 1,
'publish_pages' => 1,
'delete_pages' => 1,
'delete_others_pages' => 1,
'delete_published_pages' => 1,
'delete_posts' => 1,
'delete_others_posts' => 1,
'delete_published_posts' => 1,
'delete_private_posts' => 1,
'edit_private_posts' => 1,
'read_private_posts' => 1,
'delete_private_pages' => 1,
'edit_private_pages' => 1,
'read_private_pages' => 1,
),
'author' => array(
'upload_files' => 1,
'edit_posts' => 1,
'edit_published_posts' => 1,
'publish_posts' => 1,
'read' => 1,
'level_2' => 1,
'level_1' => 1,
'level_0' => 1,
'delete_posts' => 1,
'delete_published_posts' => 1,
),
'contributor' => array(
'edit_posts' => 1,
'read' => 1,
'level_1' => 1,
'level_0' => 1,
'delete_posts' => 1,
),
'subscriber' => array(
'read' => 1,
'level_0' => 1,
),
'display_name' => array(
'administrator' => 'Administrator',
'editor' => 'Editor',
'author' => 'Author',
'contributor' => 'Contributor',
'subscriber' => 'Subscriber',
),
);
$role = strtolower( $role );
remove_role( $role );
return add_role( $role, $default_roles['display_name'][$role], $default_roles[$role] );
} // function reset_role_akrr
@schalkjoubert

This comment has been minimized.

Copy link

schalkjoubert commented Dec 1, 2015

Hi,
How do I use it?
Simply adding to my theme's function.php?
Thank you

@mnelson4

This comment has been minimized.

Copy link

mnelson4 commented May 14, 2016

slapped that into my theme's functions.php file, and added reset_role_akrr('administrator'); and it restored the administrator's caps. Beauty

@mehrshaddarzi

This comment has been minimized.

Copy link

mehrshaddarzi commented Feb 27, 2017

if ( !function_exists( 'populate_roles' ) ) {
require_once( ABSPATH . 'wp-admin/includes/schema.php' );
}

populate_roles();

@RadBoris

This comment has been minimized.

Copy link

RadBoris commented Aug 9, 2019

Ah, this save me as well! Works perfectly on later versions of WP.

@vivekpatil94

This comment has been minimized.

Copy link

vivekpatil94 commented Apr 13, 2020

Can anyone guide me how to use this file. Tried in functions.php of theme file but not impact.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.