Roles and Capabilities – Documentation – WordPress.org
Roles and Capabilities
In this article
Summary of Roles
- Super Admin – somebody with access to the site network administration features and all other features. See the Create a Network article.
- Administrator ( slug: ‘administrator’) – somebody who has access to all the administration features within a single site.
- Editor ( slug: ‘editor’) – somebody who can publish and manage posts including the posts of other users.
- Author ( slug: ‘author’) – somebody who can publish and manage their own posts.
- Contributor ( slug: ‘contributor’) – somebody who can write and manage their own posts but cannot publish them.
- Subscriber ( slug: ‘subscriber’) – somebody who can only manage their profile.
WordPress uses a concept of Roles, designed to give the site owner the ability to control what users can and cannot do within the site. A site owner can manage the user access to such tasks as writing and editing posts, creating Pages, creating categories, moderating comments, managing plugins, managing themes, and managing other users, by assigning a specific role to each of the users.
Roles
A Role defines a set of tasks a user assigned the role is allowed to perform. For instance, the Super Admin role encompasses every possible task that can be performed within a Network of virtual WordPress sites. The Administrator role limits the allowed tasks only to those which affect a single site. On the other hand, the Author role allows the execution of just a small subset of tasks.
Super Admin
Multisite Super Admins have, by default, all capabilities. The following Multisite-only capabilities are therefore only available to Super Admins:
- create_sites
- delete_sites
- manage_network
- manage_sites
- manage_network_users
- manage_network_plugins
- manage_network_themes
- manage_network_options
- upgrade_network
- setup_network
Administrator
The capabilities of Administrators differ between single site and Multisite WordPress installations. All administrators have the following capabilities:
- activate_plugins
- delete_others_pages
- delete_others_posts
- delete_pages
- delete_posts
- delete_private_pages
- delete_private_posts
- delete_published_pages
- delete_published_posts
- edit_dashboard
- edit_others_pages
- edit_others_posts
- edit_pages
- edit_posts
- edit_private_pages
- edit_private_posts
- edit_published_pages
- edit_published_posts
- edit_theme_options
- export
- import
- list_users
- manage_categories
- manage_links
- manage_options
- moderate_comments
- promote_users
- publish_pages
- publish_posts
- read_private_pages
- read_private_posts
- read
- remove_users
- switch_themes
- upload_files
- customize
- delete_site
Editor
- delete_others_pages
- delete_others_posts
- delete_pages
- delete_posts
- delete_private_pages
- delete_private_posts
- delete_published_pages
- delete_published_posts
- edit_others_pages
- edit_others_posts
- edit_pages
- edit_posts
- edit_private_pages
- edit_private_posts
- edit_published_pages
- edit_published_posts
- manage_categories
- manage_links
- moderate_comments
- publish_pages
- publish_posts
- read
- read_private_pages
- read_private_posts
Author
Contributor
Subscriber
Special Cases
The following capabilities are special cases:
- unfiltered_upload – This capability is not available to any role by default (including Super Admins). The capability needs to be enabled by defining the following constant:
define( 'ALLOW_UNFILTERED_UPLOADS', true );
With this constant defined, all roles on a single site install can be given the unfiltered_upload capability, but only Super Admins can be given the capability on a Multisite install.
Capability vs. Role Table
Note that the capabilities of Administrators differs between single site and Multisite WordPress installations.
| Capability | Super Admin | Administrator | Editor | Author | Contributor | Subscriber |
|---|---|---|---|---|---|---|
| create_sites | yes | x | x | x | x | x |
| delete_sites | yes | x | x | x | x | x |
| manage_network | yes | x | x | x | x | x |
| manage_sites | yes | x | x | x | x | x |
| manage_network_users | yes | x | x | x | x | x |
| manage_network_plugins | yes | x | x | x | x | x |
| manage_network_themes | yes | x | x | x | x | x |
| manage_network_options | yes | x | x | x | x | x |
| upload_plugins | yes | x | x | x | x | x |
| upload_themes | yes | x | x | x | x | x |
| upload_network | yes | x | x | x | x | x |
| upgrade_network | yes | x | x | x | x | x |
| setup_network | yes | x | x | x | x | x |
| activate_plugins | yes | yes (single site or enabled by network setting) |
x | x | x | x |
| create_users | yes | yes (single site) | x | x | x | x |
| delete_plugins | yes | yes (single site) | x | x | x | x |
| delete_themes | yes | yes (single site) | x | x | x | x |
| delete_users | yes | yes (single site) | x | x | x | x |
| edit_files | yes | yes (single site) | x | x | x | x |
| edit_plugins | yes | yes (single site) | x | x | x | x |
| edit_theme_options | yes | yes | x | x | x | x |
| edit_themes | yes | yes (single site) | x | x | x | x |
| edit_users | yes | yes (single site) | x | x | x | x |
| export | yes | yes | x | x | x | x |
| import | yes | yes | x | x | x | x |
| install_plugins | yes | yes (single site) | x | x | x | x |
| install_themes | yes | yes (single site) | x | x | x | x |
| list_users | yes | yes | x | x | x | x |
| manage_options | yes | yes | x | x | x | x |
| promote_users | yes | yes | x | x | x | x |
| remove_users | yes | yes | x | x | x | x |
| switch_themes | yes | yes | x | x | x | x |
| update_core | yes | yes (single site) | x | x | x | x |
| update_plugins | yes | yes (single site) | x | x | x | x |
| update_themes | yes | yes (single site) | x | x | x | x |
| edit_dashboard | yes | yes | x | x | x | x |
| customize | yes | yes | x | x | x | x |
| delete_site | yes | yes | x | x | x | x |
| moderate_comments | yes | yes | yes | x | x | x |
| manage_categories | yes | yes | yes | x | x | x |
| manage_links | yes | yes | yes | x | x | x |
| edit_others_posts | yes | yes | yes | x | x | x |
| edit_pages | yes | yes | yes | x | x | x |
| edit_others_pages | yes | yes | yes | x | x | x |
| edit_published_pages | yes | yes | yes | x | x | x |
| publish_pages | yes | yes | yes | x | x | x |
| delete_pages | yes | yes | yes | x | x | x |
| delete_others_pages | yes | yes | yes | x | x | x |
| delete_published_pages | yes | yes | yes | x | x | x |
| delete_others_posts | yes | yes | yes | x | x | x |
| delete_private_posts | yes | yes | yes | x | x | x |
| edit_private_posts | yes | yes | yes | x | x | x |
| read_private_posts | yes | yes | yes | x | x | x |
| delete_private_pages | yes | yes | yes | x | x | x |
| edit_private_pages | yes | yes | yes | x | x | x |
| read_private_pages | yes | yes | yes | x | x | x |
| unfiltered_html | yes | yes (single site) | yes (single site) | x | x | x |
Capabilities
Side Editor Capabilities
The Site Editor is available when a block theme is active and allows users to manage site templates, template parts, styles, navigation, and content from a single editing interface.
Access to Site Editor features depends on the capabilities assigned to the current user. The following capabilities may be relevant when creating a custom role that needs access to the Site Editor:
| Capability | Description |
|---|---|
edit_theme_options |
Grants access to the Site Editor and its navigation menu. |
edit_posts |
Allows users to edit posts, which is required for managing templates. |
edit_pages |
Allows users to edit pages, which is required for managing page templates. |
edit_others_posts |
Allows users to edit others’ posts, which is required for managing templates. |
read |
Allows users to view the site, which is required for previewing changes. |
upload_files |
Allows users to upload media, which is required for adding images and media. |
edit_theme_options is the primary capability used by WordPress when determining whether a user can access and manage templates through the Site Editor. Other capabilities may be required depending on which types of content the user is expected to edit.
Creating a Custom Site Editor Role
A custom role can be created with the capabilities required for the tasks the user should be able to perform. For example:
Capabilities can also be added to an existing role by using WP_Role::add_cap():
When adding capabilities to an existing role, consider the broader permissions that each capability provides. For example, edit_theme_options is not limited exclusively to the Site Editor and may grant access to other theme-related administrative functionality.
REST API Capability Checks
The Site Editor uses the WordPress REST API to retrieve and update templates, template parts, pages, navigation data, patterns, and other information.
For template and template-part endpoints, WordPress checks whether the current user has the edit_theme_options capability. A user without this capability may receive an authorization error when the Site Editor attempts to access these endpoints.
Other REST API endpoints can perform their own capability checks. For example, endpoints dealing with posts or pages may require capabilities such as:
edit_postsedit_pagesedit_others_posts- other object-specific capabilities depending on the requested operation
If a custom role can open the Site Editor but some sections fail to load or save, check the browser’s developer tools for REST API requests returning 401 Unauthorized or 403 Forbidden responses.
The REST API response will often include an error code and message indicating the type of permission that failed. This can help identify whether the role is missing a capability required by that particular endpoint.
Only grant the capabilities required for the tasks the role is intended to perform.
Switch Themes
- Since 2.0
- Allows access to Administration Screens
- Appearance
- Appearance > Themes
Edit Themes
- Since 2.0
- Allows access to Appearance > Theme Editor to edit theme files.
Edit Theme Options
While this capability grants access to the Site Editor, additional capabilities may be required for full functionality. For example, users may also need edit_posts, edit_pages, and edit_others_posts to fully utilize the Site Editor’s features.
- Since 3.0
- Allows users to edit theme options, including access to the Site Editor in Full Site Editing (FSE) environments and allows access to Administration Screens options:
Install Themes
- Since 2.8
- Allows access to Administration Screens options:
- Appearance > Add New Themes
Activate Plugins
- Since 2.0
- Allows access to Administration Screens options:
Edit Plugins
- Since 2.0
- Allows access to Administration Screens options:
Install Plugins
- Since 2.7
- Allows access to Administration Screens options:
- Plugins > Add New
Edit Users
- Since 2.0
- Allows access to Administration Screens options:
Edit Files
- Since 2.0
- Note: No longer used.
Manage Options
- Since 2.0
- Allows access to Administration Screens options:
- Settings > General
- Settings > Writing
- Settings > Reading
- Settings > Discussion
- Settings > Permalinks
- Settings > Miscellaneous
Moderate Comments
- Since 2.0
- Allows users to moderate comments from the Comments Screen (although a user needs the edit_posts Capability in order to access this)
Manage Categories
- Since 2.0
- Allows access to Administration Screens options:
- Posts > Categories
- Links > Categories
Manage Links
- Since 2.0
- Allows access to Administration Screens options:
- Links
- Links > Add New
Upload Files
- Since 2.0
- Allows access to Administration Screens options:
- Media
- Media > Add New
Import
- Since 2.0
- Allows access to Administration Screens options:
- Tools > Import
- Tools > Export
Unfiltered HTML
- Since 2.0
- Allows user to post HTML markup or even JavaScript code in pages, posts, comments and widgets.
- Note: Enabling this option for untrusted users may result in their posting malicious or poorly formatted code.
- Note: In WordPress Multisite, only Super Admins have the
unfiltered_htmlcapability.
Edit Posts
- Since 2.0
- Allows access to Administration Screens options:
- Posts
- Posts > Add New
- Comments
- Comments > Awaiting Moderation
Edit Others Posts
- Since 2.0
- Allows access to Administration Screens options:
- Manage > Comments ( Lets user delete and edit every comment, see edit_posts above)
Edit Published Posts
- Since 2.0
- User can edit their published posts. This capability is off by default.
Publish Posts
- Since 2.0
- See and use the “publish” button when editing their post (otherwise they can only save drafts)
Edit Pages
- Since 2.0
- Allows access to Administration Screens options:
- Pages
- Pages > Add New
Read
- Since 2.0
- Allows access to Administration Screens options:
- Dashboard
- Users > Your Profile
Publish Pages
- Since 2.1
Edit Others Pages
- Since 2.1
Edit Published Pages
- Since 2.1
Delete Pages
- Since 2.1
Delete Others Pages
- Since 2.1
Delete Published Pages
- Since 2.1
Delete Posts
- Since 2.1
Delete Others Posts
- Since 2.1
Delete Published Posts
- Since 2.1
Delete Private Posts
- Since 2.1
Edit Private Posts
- Since 2.1
Read Private Posts
- Since 2.1
Delete Private Pages
- Since 2.1
Edit Private Pages
- Since 2.1
Read Private Pages
- Since 2.1
Delete Users
- Since 2.1
Create Users
- Since 2.1
- Allows creating new users.
Unfiltered Upload
- Since 2.3
Edit Dashboard
- Since 2.5
Customize
- Since 4.0
- Allows access to the Customizer.
Delete Site
- Since 4.0
- Allows the user to delete the current site (Multisite only).
Update Plugins
- Since 2.6
Delete Plugins
- Since 2.6
Update Themes
- Since 2.7
Update Core
- Since 3.0
List Users
- Since 3.0
- Allows access to Administration Screens options:
Remove Users
- Since 3.0
Add Users
- Since 3.0
- Replaced in 4.4 with promote_users
Promote Users
- Since 3.0
- Enables the “Change role to…” dropdown in the admin user list.
Delete Themes
- Since 3.0
Export
- Since 3.0
Edit Comment
- Since 3.1
Create Sites
- Since 3.1
- Multi-site only
- Allows user to create sites on the network
Delete Sites
- Since 3.1
- Multi-site only
- Allows user to delete sites on the network
Manage Network
- Since 3.0
- Multi-site only
- Allows access to Super Admin menu
Manage Sites
- Since 3.0
- Multi-site only
- Allows access to Network Sites menu
Manage Network Users
- Since 3.0
- Multi-site only
- Allows access to Network Users menu
Manage Network Themes
- Since 3.0
- Multi-site only
- Allows access to Network Themes menu
Manage Network Options
- Since 3.0
- Multi-site only
- Allows access to Network Options menu
Manage Network Plugins
- Multi-site only
- Allows access to Network Plugins menu
Upload Plugins
- Since 4.0
- Multi-site only
- Allows user to upload plugin ZIP files from the Network Plugins -> Add New menu
Upload Themes
- Since 4.0
- Multi-site only
- Allows user to upload theme ZIP files from the Network Themes -> Add New menu
Upgrade Network
- Since 4.8
- Multi-site only
- is used to determine whether a user can access the Network Upgrade page in the network admin.
Setup Network
- Since 4.8
- Multi-site only
- is used to determine whether a user can setup multisite, i.e. access the Network Setup page.