Configuring Roles and Permissions in the Hub
The Hub uses the PublishPress Capabilities plugin to control what each user role can see and do. Each permission is called a capability and has a technical name such as edit_others_posts or bulk_publish_content. These names are hard to read, so this guide explains what the capabilities that matter in the Hub do and how to combine them for common editorial setups.
Who can do this? Only administrators can change roles and capabilities.
1. Basics
Roles and capabilities
- A capability is a single permission, for example "may publish articles".
- A role is a named set of capabilities, for example Purple Editor.
- Every user has a role. A user can do whatever their role's capabilities allow.
You never give capabilities to individual users. You configure a role and then assign that role to users under Users → All Users → (user) → Role.
Where to find the settings
In the Hub admin menu, open Capabilities:
Menu entry | What it is for |
|---|---|
Capabilities | The main editor. Pick a role at the top and tick or untick its capabilities. |
Roles | Create, copy, rename or delete roles. |
Admin Menus | Hide admin menu entries for a role. This only hides them; it does not remove the permission. |
Editor Features | Hide panels and settings in the article editor for a role. |
Admin Features | Hide toolbar items and other admin elements for a role. |
Profile Features | Hide fields on the user profile page for a role. |
Backup | Save the current role configuration or restore an earlier one. |
Tip: Make a backup under Capabilities → Backup before you make large changes.
Reading the capabilities screen
- Choose the role you want to change in the role selector at the top.
- Use the tabs on the left to switch between capability groups (Editing, Deletion, Taxonomies, Media, Admin, plugin groups, and so on).
- Hover over a capability name to see PublishPress' short description.
- Tick a box to grant a capability, or untick it to remove it. Clicking the small X next to a box denies the capability: the user doesn't get it, even if the role usually would grant it. You'll rarely need this.
- Click Save Changes. Nothing is applied until you save.
On the Editing, Deletion and Reading tabs, capabilities are shown as a grid: one column per content type (Posts, Pages, Issues, Dossiers, custom content types) and one row per action (Edit, Edit Others, Publish, …). Each checkbox controls that action for that content type only.
Hide vs. forbid
- Capabilities decide what a user is allowed to do. Without the capability, the action fails, including through the API.
- Admin Menus / Editor Features / Admin Features only hide elements to keep the interface simple. They are not a security setting.
Use capabilities to restrict access. Use the hiding features to declutter the interface.
2. Roles that come with the Hub
Three roles come with every Hub:
Role | Typical use | What it can do |
|---|---|---|
Administrator | Hub owners and technical admins | Everything, including Hub settings, users and capabilities. Cannot create new users (users are provisioned through Purple). |
Purple Managing Editor | Desk leads and editors-in-chief | All content, including others' articles, Issues, Dossiers and the Curator. Plus App Themes, Bulk Publish, Purple Wires, Purple RSS and theme options (edit_theme_options). |
Purple Editor | Regular editors | All content, including others' articles, Issues, Dossiers and the Curator. No App Themes, Bulk Publish, Purple Wires or Purple RSS. |
For anything in between, for example writers who may not publish, create your own role based on one of these (see Recipes). Roles you create appear alongside the three built-in roles and can be assigned to users.
What about Editor, Author, Contributor and Subscriber? These standard WordPress roles, and the SEO Editor / SEO Manager roles added by Yoast SEO, are not available in the Hub. They can't be assigned to users and are not listed under Capabilities → Roles. Users who already have one of these roles keep it and their permissions. You can move them to a Hub role at any time.
Important: The Hub automatically gives the Administrator role all Purple capabilities (app_themes, edit_issues, edit_dossiers, edit_collections, bulk_publish_content, bulk_publish_taxonomies, unfiltered_html, purple_wires, purple_rss) every time an administrator opens the backend. It also always gives Purple Managing Editor edit_theme_options. Removing these does not stick.
Do not delete or rename the Purple Editor or Purple Managing Editor roles. If one of them is missing, the Hub recreates both with their default settings, and your changes to them are lost.
3. Capability reference
Plugin sections (3.8 onwards) only appear if that plugin is active on your Hub.
3.1 Editing, Deletion and Reading tabs (per content type)
The rows below exist once per content type. The name in parentheses is the capability for Posts (articles); other content types use the same pattern with their own name, for example edit_pages or publish_pages.
Label in the grid | Capability (Posts) | What it allows |
|---|---|---|
Edit | edit_posts | Create articles and edit own drafts. This is also what lets a user open the content list and the editor. Almost every editorial role needs it. |
Edit Others | edit_others_posts | Edit articles written by other users. Also needed to edit or replace media uploaded by others, to use the content importers, and to change Nelio Content settings. |
Edit Published | edit_published_posts | Change articles that are already published. Without it, a user can't touch an article once it is live. |
Edit Private | edit_private_posts | Edit articles with private visibility. |
Publish | publish_posts | Publish articles (make them live) and use the publish bulk action in the article list. Without it the user can only Submit for Review. |
Delete | delete_posts | Delete own unpublished articles. |
Delete Others | delete_others_posts | Delete articles written by others. Also needed to delete media uploaded by others. |
Delete Published | delete_published_posts | Delete articles that are already published. |
Delete Private | delete_private_posts | Delete private articles. |
Read Private | read_private_posts | See private articles in lists. |
Custom content types (for example those created under CPT UI) usually share the permissions of Posts. If a content type has no column of its own in the grid, the Posts column applies to it.
Issues and Dossiers do not have a grid of their own. A single capability controls each of them:
Capability | What it allows |
|---|---|
edit_issues | Full access to Issues: create, edit, publish and delete. |
edit_dossiers | Full access to Dossiers: create, edit, publish and delete. |
3.2 Taxonomies tab (categories, tags, custom taxonomies)
One column per taxonomy (Categories, Tags, and any custom taxonomy).
Label | Capability (Categories) | What it allows |
|---|---|---|
Manage | manage_categories | Open the taxonomy admin page and manage its settings. Also needed to manage media folders/categories in the Hub media library. |
Edit | edit_categories | Create new terms and rename existing ones. |
Delete | delete_categories | Delete terms. |
Assign | assign_categories | Select existing terms on an article. |
Hub behaviour: A role with Assign but without Edit can pick existing terms in the editor but cannot create new ones, not even by typing a new tag. Use this to keep your taxonomy clean (see Recipes).
The Authors taxonomy (PublishPress Authors) is controlled by its own capabilities instead; see 3.10.
3.3 Media tab
Capability | What it allows |
|---|---|
upload_files | Upload images and files, and use the media library, including Unsplash, Picture Alliance, Hugo, AI image metadata and similar image sources. |
safe_svg_upload_svg | Upload SVG files. |
Editing or deleting media that someone else uploaded also requires Edit Others / Delete Others (see 3.1).
3.4 Admin tab
Capability | What it allows | Recommendation |
|---|---|---|
read | Log in to the backend at all. | Every role needs it. |
manage_options | Opens all Hub settings: Settings → Purple DS HUB, Hub UI, Hub Apps, Workflows configuration, Purple Blocks, Most Read, ePaper interstitial, AI image settings, Hugo / Unsplash / Picture Alliance / EXIF settings, Aptoma, Google Translate, column configuration of the overviews, Curator settings and more. Also opens the settings of most plugins: languages (Polylang), custom fields (ACF), content types and taxonomies (CPT UI), Nelio Content account, Ninja Tables and others. | Administrators only. Giving it to editors lets them change system-wide settings. |
unfiltered_html | Use any HTML in content, including <script>, <iframe> and embeds in Custom HTML blocks. Without it, the Hub strips "unsafe" markup when the article is saved. | Give it to roles that embed third-party widgets (polls, social posts, video players). Without it, embeds disappear after saving. |
edit_dashboard, export, import, update_core | Standard WordPress functions that are not used in the Hub. | Leave unchanged. |
3.5 Users tab
Capability | What it allows |
|---|---|
list_users | See the user list. |
promote_users | Change another user's role. |
edit_users | Edit other users' profiles, including their author slug (the name in author URLs). |
remove_users / delete_users | Remove users from the Hub. remove_users also opens Settings → Copy Setup (copying configuration between Hubs). |
add_users / create_users | Not available in the Hub. Users are provisioned through Purple and cannot be created in the Hub. |
3.6 Themes tab
Capability | What it allows |
|---|---|
edit_theme_options | Manage menus/navigation and other appearance options. Always granted to Purple Managing Editor. |
switch_themes, edit_themes, install_themes, update_themes, delete_themes, manage_links | Not used in the Hub (the Hub is headless). Leave unchanged. |
3.7 Plugins tab
activate_plugins, install_plugins, update_plugins, delete_plugins and edit_plugins are reserved for administrators. Do not grant them to editorial roles.
3.8 Plugin capabilities: Purple Capabilities
These are the Hub's own features.
Capability | Menu / feature | What it allows |
|---|---|---|
app_themes | App Themes | Edit the colours, fonts and look of the connected apps/websites. |
edit_issues | Issues | Manage issues (see 3.1). |
edit_dossiers | Dossiers | Manage dossiers (see 3.1). |
edit_collections | Purple Curator | Open the Curator and arrange collections (teasers, homepage modules). |
bulk_publish_content | Bulk Publish → Publish Content | Publish or republish large amounts of content to the apps at once. |
bulk_publish_taxonomies | Bulk Publish → Publish Taxonomies | Publish all categories/tags/taxonomy terms to the apps at once. |
purple_wires | Purple Wires | Use the news-agency wire feeds (browse, import, configure channels). |
purple_rss | Purple RSS | Configure and use RSS feed imports. |
unfiltered_html | – | See 3.4. |
Note: Bulk publishing can put a heavy load on the apps and trigger many updates. Give bulk_publish_content and bulk_publish_taxonomies only to a few trusted users.
3.9 Plugin capabilities: Workflow (Oasis Workflow)
Only relevant if your Hub uses editorial workflows.
Capability | What it allows |
|---|---|
ow_submit_to_workflow | Submit an article into a workflow. Also needed to write editorial comments. |
ow_sign_off_step | Complete (sign off) a workflow step assigned to the user. Also needed to write editorial comments. |
ow_skip_workflow | Publish without going through the workflow. |
ow_abort_workflow | Cancel a running workflow. |
ow_reassign_task | Hand a workflow task over to another user. |
ow_view_others_inbox | See other users' workflow inboxes. |
ow_view_reports | See workflow reports. |
ow_view_workflow_history / ow_download_workflow_history | View or download the workflow history. |
ow_delete_workflow_history | Delete entries from the workflow history. |
ow_make_revision / ow_make_revision_others | Create a revision of a published article (own / others') and send it through the workflow. |
ow_duplicate_post | Duplicate articles from the workflow screens. |
ow_create_workflow / ow_edit_workflow / ow_delete_workflow | Design workflows, including editorial checklists and groups. Administrators only. |
ow_export_import_workflow | Export workflows and import them into another Hub. Administrators only. |
ow_view_teams / ow_create_teams / ow_edit_teams / ow_delete_teams | View and manage workflow teams. |
3.10 Plugin capabilities: PublishPress Authors
Capability | What it allows |
|---|---|
ppma_edit_post_authors | Change the author(s) of an article, including adding co-authors and guest authors. |
ppma_manage_authors | Create, edit and delete author profiles under Authors. |
ppma_edit_own_profile | Edit one's own author profile. |
ppma_manage_layouts / ppma_manage_custom_fields | Configure author box layouts and author profile fields. Administrators only. |
3.11 Plugin capabilities: Nelio Content
Nelio Content provides the editorial calendar, editorial tasks and social media scheduling.
Capability | What it allows |
|---|---|
(none needed) | Anyone who can Edit at least one content type shown in the calendar (see 3.1) can use the calendar, tasks and references. |
manage_nelio_plugin_settings | Change Nelio Content settings. The role also needs Edit Others (edit_others_posts). By default, every role with Edit Others can change the settings. To restrict them, see the recipe Only some editors may change Nelio Content settings. |
create_nc_references, edit_nc_references, publish_nc_references, delete_nc_references and the other …nc_reference… capabilities | Nelio sets these automatically for everyone who can use the plugin. Changing them has no effect. |
Connecting or disconnecting the Nelio account and managing the subscription requires manage_options (administrators).
3.12 Plugin capabilities: Yoast SEO
Capability | What it allows |
|---|---|
wpseo_edit_advanced_metadata | Edit advanced SEO settings of an article (noindex, canonical URL, …). |
wpseo_bulk_edit | Use Yoast's bulk editor for SEO titles and descriptions. |
wpseo_manage_options | Change Yoast's global settings. Administrators only. |
3.13 Plugin capabilities: Duplicate Post
Capability | What it allows |
|---|---|
copy_posts | Use Clone / New Draft to duplicate articles. Which roles have it is also set in Settings → Duplicate Post. |
3.14 Other plugin capabilities
Capability | Plugin | What it allows |
|---|---|---|
edit_author_slug | Edit Author Slug | Change one's own author slug (the name in author URLs). Changing others' slugs needs edit_users. |
read_purple_prompts_external | Purple Prompts | Lets external tools read the configured AI prompts. Only for technical/integration users. Listed under Additional if present. |
objectcache_manage | Object Cache Pro | View and flush the object cache. Purple-internal; leave unchanged. |
view_query_monitor | Query Monitor | See the developer debug toolbar. Purple-internal; leave unchanged. |
Ninja Tables does not use a capability you can set here. Who may create and edit tables is configured in Ninja Tables' own settings.
3.15 PublishPress Capabilities itself
Capability | What it allows |
|---|---|
manage_capabilities and manage_capabilities_* | Open the Capabilities screens described in this guide. Administrators only. Anyone with these can give themselves any permission. |
3.16 "Additional" and "Invalid Capabilities" tabs
- Additional lists capabilities that don't belong to any of the groups above. These usually come from plugins. Leave them unchanged unless support tells you otherwise.
- Invalid Capabilities lists permissions that are stored on a role but no longer used by anything. They are harmless.
4. Built-in roles at a glance
Task | Purple Editor | Purple Managing Editor | Administrator |
|---|---|---|---|
Write, edit and publish articles (own and others') | ✔ | ✔ | ✔ |
Upload media | ✔ | ✔ | ✔ |
Create categories/tags | ✔ | ✔ | ✔ |
Issues, Dossiers, Curator | ✔ | ✔ | ✔ |
Embed custom HTML / scripts | ✔ | ✔ | ✔ |
Editorial calendar (Nelio Content) | ✔ | ✔ | ✔ |
Purple Wires, Purple RSS | – | ✔ | ✔ |
Menus / theme options | – | ✔ | ✔ |
App Themes, Bulk Publish | – | ✔ | ✔ |
Hub and plugin settings, users, capabilities | – | – | ✔ |
This table shows the defaults. Your Hub may have been configured differently.
5. Recipes
The following describes a few scenarios that commonly occur in everyday life. It describes how the desired outcome can be reached.
Create a custom role
- Go to Capabilities → Roles.
- Hover over the role that comes closest to what you need, usually Purple Editor, and click Copy.
- Enter a name for the new role, for example "Online Desk", and click Create Role.
- Go to Capabilities, select the new role and adjust it.
- Assign the role to users under Users → All Users.
Start from a copy of an existing role rather than from an empty role. An empty role usually lacks basics like read, edit_posts and upload_files, and the user ends up with an empty admin interface.
Writers who may only work on their own articles
Copy Purple Editor and, on the Editing and Deletion tabs, uncheck Edit Others and Delete Others for every content type. Also uncheck edit_issues, edit_dossiers and edit_collections in Purple Capabilities if writers shouldn't touch them.
Writers who may not publish
Start from the writer role above and also uncheck Publish, Edit Published and Delete Published. Writers can then only submit their articles for review.
Writers may tag, but only with existing tags
In the Taxonomies tab of the role, keep Assign checked for Tags and uncheck Edit and Delete. Writers can select existing tags, but new ones can only be created by roles that have Edit.
Editors who may change content but not the live version
Keep Edit and Edit Others, but uncheck Publish and Edit Published for Posts. These editors prepare content, and a senior editor publishes it.
Let someone manage the Curator but nothing else of the Purple features
Copy Purple Editor to a new role and uncheck edit_issues and edit_dossiers in Purple Capabilities. Keep edit_collections.
Let a desk lead work with wire feeds without giving full admin rights
Assign Purple Managing Editor, or add purple_wires (and/or purple_rss) to their role.
Only some editors may change Nelio Content settings
Tick manage_nelio_plugin_settings on the role that should manage Nelio. On every other role with Edit Others, click the X next to manage_nelio_plugin_settings to deny it explicitly. Just unticking is not enough: Nelio only restricts its settings for roles where the capability is explicitly denied.
Simplify the editor for a role
Use Capabilities → Editor Features to hide sidebar panels the role never needs (for example Discussion or Excerpt). This changes only the interface, not permissions.
6. Troubleshooting
Symptom | Likely cause |
|---|---|
A menu entry is missing for a user | The role is missing the capability listed for that menu in section 3, or the menu was hidden under Admin Menus. |
"Sorry, you are not allowed to access this page." | The role is missing the capability for that page. For Hub and plugin settings pages this is usually manage_options. |
User can edit but the Publish button says Submit for Review | The role is missing Publish (publish_posts) for that content type. |
User can't edit an article after it went live | The role is missing Edit Published. |
User can't edit or delete an image | The image was uploaded by someone else, and the role is missing Edit Others / Delete Others. |
A capability I removed from Administrator or Purple Managing Editor is back | The Hub re-applies some capabilities to these roles automatically (see section 2). Use a custom role instead. |
A role I want to assign is not in the list | Only Administrator, Purple Editor, Purple Managing Editor and roles you created yourself can be assigned. |
A role change has no effect | Check that you clicked Save Changes, and that the user has the role you edited (Users → All Users). Users must reload the page after a change. |
User can't comment in the workflow / editorial comments | The role is missing ow_submit_to_workflow or ow_sign_off_step. |
User doesn't see the editorial calendar | The role can't Edit any of the content types shown in the calendar. |
If a problem persists, contact Purple support and include the role name and the exact action the user was trying to perform.