
WordPress user roles control what each user can or cannot do on your website by grouping sets of capabilities (specific permissions). This roles and permissions system lets you assign every user a role that matches their responsibilities – for example, giving content writers the ability to write posts but not change site settings​. By using roles wisely, you protect your site from accidental or malicious changes while empowering team members to do their jobs. In this updated guide (reflecting WordPress 6.5+), we’ll explain all the default roles, how to modify or create roles, new capabilities introduced in recent versions, and best practices for managing user access in 2025.
What Are WordPress User Roles and Capabilities?
A user role is essentially a job title that comes with a bundle of permissions (called capabilities) in WordPress. Each capability allows a certain action, like “publish a post” or “install a plugin.” WordPress comes with six predefined roles out of the box: Super Admin, Administrator, Editor, Author, Contributor, and Subscriber​. The Super Admin role exists only on multisite networks (covering an entire network of sites), whereas on a single-site WordPress install, you’ll primarily work with the other five roles. Roles are hierarchical in terms of capabilities – Administrators have the most privileges on a single site, while Subscribers have the fewest​. However, roles are not “levels” as much as they are sets of capabilities. You can even customize these sets or create new ones, as we’ll see later. By understanding roles and capabilities, you can fine-tune who can do what on your site. For instance, you might let an Editor review and publish content, but ensure only Administrators can change themes or add new users.
Note: The default roles themselves have remained consistent in WordPress 6.5, but the list of individual capabilities expands as WordPress adds new features. For example, recent versions introduced separate capabilities for uploading plugins and themes (upload_plugins, upload_themes), which Administrators and Super Admins have by default​. Always review the release notes for any new capabilities, though the core roles and their general scope have not changed.
Default User Roles in WordPress (Core Roles)
WordPress defines a set of default user roles, each with a different level of access. By default, new user registrations are assigned the Subscriber role (this can be changed in Settings > General). Below is a summary of each core role and what they can do on a single site (in multisite setups, the Super Admin oversees all sites):
Role | Key Capabilities and Permissions |
Super Admin | Network administrator role (Multisite only). Can perform every possible action across all sites in a WordPress network, including creating/deleting sites, managing network settings, themes, plugins, and users network-wide​. This role has all capabilities by default. |
Administrator | Site administrator role (single site). Has full control over one website: can add/remove users, install and manage plugins and themes, edit site settings, moderate content, and more​. Administrators can do everything on their site, but on a multisite network, some high-level tasks are reserved for the Super Admin​. |
Editor | Content manager role. Can create, edit, publish, and delete any posts or pages, including those written by other users​. Editors can moderate comments, manage categories and links, and generally oversee all content. However, they cannot change site settings, install plugins/themes, or add new users. |
Author | Content author role. Can write, edit, and publish their posts (and upload media files to those posts)​. Authors cannot edit or delete posts written by other users, nor can they create new pages or manage settings. They can choose from existing categories (but not create new ones) and add tags to their posts. Authors are essentially limited to managing the content they create. |
Contributor | Guest writer role. Can create and edit their posts but cannot publish them​. Contributors submit their posts for review by an Editor or Administrator who can publish on their behalf. Importantly, contributors cannot upload media files (e.g., images) to their posts​. Once a contributor’s post is published by someone else, the contributor cannot edit or delete that published post (unlike Authors, who can delete their own published work)​. This role is ideal for guest bloggers or junior writers. |
Subscriber | Basic subscriber role. Can read posts and leave comments (if comments are enabled) and manage their profile (e.g., changing their password or name)​. Subscribers have no publishing or editing capabilities on the site. This role is commonly used for sites to access content or comment, without granting any editorial power. |
Super Admin vs Administrator: On a regular single-site WordPress installation, the Administrator is the top role, able to do everything on that site. In a Multisite network (where one WordPress installation runs multiple sites), the Super Admin role sits above all site-specific Administrators​. A Super Admin can do things like install plugins or themes for the entire network and manage all sites/users. In contrast, individual site Administrators cannot install new plugins/themes unless the Super Admin allows it​. In essence, Super Admins control the network, and Administrators control a single site.
Each default role is essentially a collection of capabilities tailored to a typical use case. For example, the Contributor role can edit_posts (to write drafts) but not publish_posts, while an Editor has both capabilities plus others like moderate_comments and edit_others_posts​​. WordPress’s Roles and Capabilities documentation provides a complete matrix of which capabilities are tied to each role​​. Generally, you should assign users the most restrictive role that still allows them to do their work – this follows the principle of least privilege for better security.
Additional User Roles Created by Plugins
While the six roles above are built into WordPress core, many plugins will add custom roles or adjust capabilities to manage access to their features. These plugin-created roles help delegate specific tasks or content access without giving users more power than necessary. Here are some common examples of roles added by popular plugins:
- WooCommerce (eCommerce plugin): When you activate WooCommerce, it introduces two new roles:
- Customer – assigned to any user who registers or makes a purchase on your online store. This role is similar to a Subscriber in that it has read-only access in the admin, but Customers can also view and manage their own orders and account details (billing/shipping addresses, etc.)​. They do not get general site editing privileges.
- Shop Manager – a role for staff who need to run the day-to-day WooCommerce operations without full Administrator rights. Shop Managers can manage products, orders, and WooCommerce settings/reports​. They are essentially an Editor with added WooCommerce capabilities (manage_woocommerce, view_woocommerce_reports, etc.)​, but they cannot manage plugins, themes, or core settings beyond WooCommerce.
- MemberPress (Membership plugin): MemberPress itself leverages WordPress roles to control membership access. For instance, you might see a Member role for users who have an active membership, and possibly a Membership Manager role for someone who can manage memberships without full admin rights​. MemberPress can be configured to automatically assign a certain role to users when they purchase a membership, or even to stack roles. (In fact, the MemberPress team also offers the Members plugin, which is a general user Role Editor and membership control plugin we’ll mention later.)
- LMS Plugins (Learning Management): Online course plugins often add roles to distinguish teachers and students. For example, Tutor LMS creates an Instructor role (letting users create and manage their courses, lessons, and quizzes) and a Student role (for users enrolled in courses, with no editing rights)​. Similarly, LearnDash or LifterLMS have their equivalents (Instructor/Group Leader, Student, etc.), enabling educational sites to limit course editing to instructors.
- SEO Plugins: Yoast SEO and similar plugins introduce roles to delegate SEO tasks. Yoast SEO, for instance, adds an SEO Manager and SEO Editor role​. An SEO Editor can optimize post content (Yoast meta box, focus keywords, etc.) but cannot access global SEO settings. At the same time, an SEO Manager has broader access to SEO settings and tools (like redirects) without being a full admin​​. This is useful if you have an SEO specialist working on content, but you don’t want to give them admin privileges.
- Affiliate Plugins: A plugin like AffiliateWP adds roles such as Affiliate (for users who sign up to promote your products, allowing them to see their referral stats in an affiliate dashboard) and perhaps an Affiliate Manager (who can review and approve affiliates and manage payouts)​.
These are just a few examples – many other plugins (forum plugins, e-commerce add-ons, etc.) define their roles or capabilities. It’s important to understand any new roles a plugin creates and the powers they have. Usually, plugin documentation will explain the roles and permissions added (for example, WooCommerce’s docs note the Customer and Shop Manager roles and their capabilities​). If a plugin’s new role doesn’t fit exactly what you need, you can always modify it or create a custom role (using methods we’ll cover below) to fine-tune access.
Tip: Removing a plugin will not automatically remove the roles it created. Those roles may remain in your system (though they’ll no longer have any plugin-specific powers if the plugin is gone). You can leave them harmlessly, or clean them up using a role editor tool or a bit of custom code (remove_role()). Always be cautious when deleting roles, especially if users are assigned to them.
Managing User Roles in the WordPress Dashboard
For basic user management tasks – like assigning a role to a new user or changing someone’s role – WordPress provides a simple interface in the admin dashboard.
- Assigning a Role to a New User: Proceed to Users > Add New. There you fill in the user’s details (username, email, etc.) and assign a role from the Role dropdown before saving. For example, if you’re adding a writer, you might choose the Author or Contributor role. Once you click “Add New User,” the person will be created with that role. Screenshot: Adding a new user in WordPress and selecting a role from the dropdown.
- Viewing and Changing Roles for Existing Users: To see all users and their roles, go to Users > All Users. The list will show each user’s username, name, email, and role. If you want to change an existing user’s role, you can click “Edit” under their username (or use Bulk Actions for multiple users). On the Edit User screen, find the Role option and select a new role for the user, then click Update User. For instance, you might promote a Contributor to an Author once they’ve earned publishing rights. Screenshot: The All Users screen, where each user’s role is listed (e.g., Administrator, Subscriber). You can edit a user to change their role.
By default, only Administrators (or Super Admins on multisite) can add new users or change others’ roles​. This is a sensitive action, since giving someone a higher role grants more access. Always double-check when assigning roles – for example, avoid accidentally making someone an Administrator when they only needed Editor access.
Bulk role changes: On the All Users screen, there’s a bulk action to change roles. You can select multiple users, choose “Change role to…” from the bulk actions menu, and assign them a new role all at once. This is handy for operations like demoting a batch of users or adjusting roles after a membership level change.
Creating and Customizing User Roles
The default roles cover most needs, but sometimes you require a more tailored permission set. For example, you might want a “Copy Editor” role who can edit and publish content but not install plugins, or a “Moderator” who can manage comments but not write posts. WordPress allows a great deal of flexibility here – you can modify roles or create entirely new roles. However, there’s no built-in GUI to do this; you’ll need to either use a plugin or write some custom code. Let’s look at both approaches:
Method 1: Using a Plugin to Manage Roles and Capabilities
The easiest way to fine-tune roles is to use a User Role Editor plugin. Several excellent plugins exist to let administrators add new roles or change what existing roles can do via a friendly interface. Popular choices include User Role Editor (by Vladimir Garagulya), PublishPress Capabilities, and Members (MemberPress) – these plugins make WordPress’s powerful roles system accessible without coding.
Using User Role Editor as an example, once you install and activate the plugin​, you can go to Users > User Role Editor in your dashboard. You’ll see a screen where you can select any role and then check or uncheck capabilities for that role from a list. For instance, you could select the Contributor role and grant it the upload_files capability (allowing Contributors to add media), or create a brand new role by cloning an existing one and adjusting its capabilities.
Screenshot: The User Role Editor plugin interface. You can pick a role (e.g., Subscriber) and see all capabilities, toggling them on or off. This provides granular control without writing code.
Most role editor plugins work similarly: you get a list of all capabilities (often categorized by type: posts, pages, plugins, etc.) with checkboxes. Simply save changes to update the role. You can also add a new role by clicking “Add Role” and defining its base capabilities. For example, to create a custom “Moderator” role, you might clone the Contributor role and then add capabilities like moderate_comments (to allow comment moderation) while leaving out publishing capabilities.
Some plugins offer advanced features like assigning multiple roles to a single user, denying specific capabilities (even if another role grants them), or integrating with other plugins. The Members plugin (by MemberPress), in particular, not only edits roles but also lets you restrict content on your site to certain roles, which is very useful for membership sites​​. PublishPress Capabilities is another robust tool that also provides role management and even the ability to copy roles to another site, among other features​. Choose a role editor plugin that fits your needs, and always back up or test changes, especially if adjusting roles on a live site, to ensure you don’t inadvertently lock yourself (or others) out of needed capabilities.
Method 2: Manually Creating or Editing Roles with Code
For developers or those comfortable with PHP, WordPress provides built-in functions to manipulate roles and capabilities directly in code. This approach gives you full control and can be used in a custom plugin or your theme’s functions.php file. The primary functions in the User Roles API include​:
- add_role( $role, $display_name, $capabilities_array ) – Create a new role with a unique slug, a display name, and an array of capabilities.
- remove_role( $role ) – Remove a role (by slug).
- add_cap( $role, $capability, $grant = true ) – Add a capability to a role (you can also target a specific user’s role object).
- remove_cap( $role, $capability ) – Remove a specific capability from a role.
- get_role( $role ) – Retrieve the role object to inspect or modify it.
Using these, you could programmatically set up custom roles. For example, to add a Moderator role that can edit and publish posts but not delete them, you might do something like:
add_role('moderator', 'Moderator', [
'read' => true,
'edit_posts' => true,
'publish_posts' => true,
'delete_posts' => false,
'moderate_comments' => true,
]);
This code would register a new role called “Moderator” that inherits the specified capabilities (in this case, the ability to read, create/edit/publish posts, and moderate comments, but not delete posts). You could expand the capabilities array to include anything you need. WordPress recognizes over 70 capability strings in core​– for reference, the Roles and Capabilities documentation lists all capabilities like manage_options, install_plugins, edit_pages, etc., along with which roles have them by default.
If you want to modify an existing role via code, you can fetch it with get_role() and then use add_cap() or remove_cap(). For instance, to allow Editors to manage widgets (which is actually controlled by the capability edit_theme_options in core​), you could do:
$editor = get_role('editor');
if ($editor) {
$editor->add_cap('edit_theme_options');
}
This would give all users with the Editor role the ability to access the Customize or Site Editor features (be very careful with such changes – giving non-admins capabilities like edit_theme_options or manage_options can open up a lot of site controls​).
Caution: Always double-check the capabilities you grant or remove. Misconfiguring a role could accidentally give a user more access than intended or lock out capabilities that site functionality relies on. It’s wise to test role changes on a staging site. Also, if you remove default roles or heavily alter them, remember that some plugins or WordPress features might assume those roles exist or have certain capabilities. For example, if you removed the Author role but a plugin tries to assign it to someone, you might run into issues. In general, adding new roles is safer than deleting core ones (deleting default roles is possible, but do so only if you’re sure it’s necessary).
Using code for role management is powerful for advanced setups, such as sites that automatically assign roles based on certain triggers, or for bundling role definitions within a custom plugin for consistency across environments. For everyday role tweaks, though, a plugin solution is often simpler and less error-prone.
Best Practices for User Role Management (2025)
Managing user roles isn’t just a one-time task – it should be part of your ongoing website governance and security strategy. Here are some best practices to ensure your WordPress user roles and permissions are handled effectively in 2025 and beyond:
- Apply the Principle of Least Privilege: Give each user the lowest level of access that still allows them to do their work​. For example, if someone only writes articles, make them an Author or Contributor rather than an Administrator. Minimizing privileges reduces the risk of accidents (like an editor changing a setting) and limits damage if an account is compromised.
- Limit the Number of Administrators: It’s tempting in small teams to make everyone an admin, but try to avoid this. The Administrator role is very powerful; a user with admin rights can install plugins, edit code, or delete content/site data. Ideally, have at most one or two Administrator accounts that you truly trust​. Many successful sites have a single Administrator (often the site owner) and use an Editor for day-to-day content managers​. Fewer admins mean fewer points of failure for critical changes.
- Regularly Audit User Access: Over time, your user base and their roles can change – staff might leave, or responsibilities shift. Set a schedule (e.g., every few months) to review all user accounts and their roles​. Remove users who no longer need access, and downgrade roles if someone’s scope has reduced. For example, if a contributor hasn’t written in a year, you might remove their account or at least ensure it’s not an active admin. Likewise, check if any plugin-created roles are no longer needed (perhaps after you stopped using that plugin).
- Use Multiple Roles if Necessary: WordPress (and plugins like Members) allows giving a single user multiple roles. This can be useful in certain cases – for instance, a user could be both an Editor and a “Shop Manager” for WooCommerce. Rather than creating a brand new hybrid role, you might simply assign two roles. This way, they accumulate capabilities from both roles. Just be careful: multiple roles mean multiple sets of permissions, so audit combined capabilities to avoid overlaps that grant too much access.
- Document Custom Roles and Policies: If your site has custom roles or very specific permission rules, maintain a brief document (even an internal one) about these roles and what they’re for​. This is especially helpful if you have a team of administrators or if someone new takes over site management. Clear documentation prevents confusion like “What does our ‘Moderator Plus’ role do?” and ensures consistency in how you assign roles.
- Leverage Plugins for Complex Permissions: If your permission needs get very granular (e.g., “this user can edit only a certain custom post type” or “hide certain admin menu items for some roles”), consider using advanced access control plugins. For example, Advanced Access Manager (AAM) or PublishPress Permissions can fine-tune access beyond standard roles, down to specific pages or admin menu items. These can complement the core roles to implement a very strict policy (useful for large organizations). Always back up before making complex rules, and test with test user accounts.
- Security Measures for High-Privileged Accounts: Protect Administrator (and Super Admin) accounts with strong, unique passwords and ideally two-factor authentication. While this isn’t a “role” setting per se, it’s a best practice to safeguard the credentials of your most powerful users. Also, consider monitoring admin activity with a plugin (activity logs) so you have a record of major changes – this can help trace if a user with a certain role made an unintended change.
- Use Separate Accounts for Publishing vs. Administration: One clever practice if you’re a site owner who also publishes content: have two accounts – one Administrator account (used sparingly for site setup or critical changes), and a second account with Editor or Author role for writing posts on a daily basis​. This way, your day-to-day activities are done under a lower-privileged account. It reduces the chances of making a catastrophic mistake (since you’re not usually logged in as Admin). Also, it means that if your writing account is compromised, the damage is limited. Just remember to log into the admin account when you need to perform admin tasks.
By following these practices, you’ll maintain a tidy and secure user role structure. In summary: grant permissions deliberately, review them periodically, and keep administrators to a minimum​. WordPress’s roles and capabilities system is very robust when used correctly – it allows large sites with many contributors to operate smoothly without everyone running as an admin.
Conclusion and Further Resources
Understanding and managing user roles is crucial for keeping your WordPress site secure and organized. As of WordPress 6.5, the roles and permissions model remains largely the same, but it’s always good to stay informed on WordPress updates (new features sometimes come with new capabilities to manage). Always align user access with your workflow needs – neither over-privilege nor under-privilege your team.
For more information, check out the official WordPress Roles and Capabilities documentation​, which provides a comprehensive list of capabilities and default role mappings. If you plan to implement custom roles via code, the WordPress Developer Reference and Codex have detailed articles on the relevant functions and examples. Plugin developers often document the roles/capabilities their plugins use – for instance, WooCommerce’s docs on roles​ or Yoast’s guide on SEO roles​ are helpful reads. By leveraging these resources and the tips outlined above, you can confidently manage who has access to what on your WordPress site, ensuring both flexibility in collaboration and safety for your site’s critical settings and content.
About the writer
Hassan Tahir wrote this article, drawing on his experience to clarify WordPress concepts and enhance developer understanding. Through his work, he aims to help both beginners and professionals refine their skills and tackle WordPress projects with greater confidence.