Skip to content

Instantly share code, notes, and snippets.

@alispx
Forked from AKTed/wp-reset-roles.php
Created January 25, 2016 10:43
Show Gist options
  • Save alispx/4630ec67c708795aac7a to your computer and use it in GitHub Desktop.
Save alispx/4630ec67c708795aac7a 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment