Skip to content

Instantly share code, notes, and snippets.

@AKTed
Last active July 3, 2022 09:45
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save AKTed/4583267 to your computer and use it in GitHub Desktop.
Save AKTed/4583267 to your computer and use it in GitHub Desktop.
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
Copy link

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

@mnelson4
Copy link

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

@mehrshaddarzi
Copy link

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

populate_roles();

@RadBoris
Copy link

RadBoris commented Aug 9, 2019

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

@vivekpatil94
Copy link

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