WordPress user roles and permissions, explained properly

TLDR

WordPress ships six roles. A role is only a labelled bundle of capabilities, and capabilities are what actually grant permission. Most access problems are solved by adding a custom role with exactly the capabilities needed, rather than promoting someone to Editor and hoping. Never hand out Administrator to solve a single missing capability.

The six default roles

  • Super Admin – multisite only. Controls every site on the network, plus plugins and themes network-wide.
  • Administrator – total control of one site, including installing plugins and editing files. Give this to as few people as possible.
  • Editor – publish and edit anyone’s posts and pages, manage categories and comments. No access to plugins, themes, settings or users.
  • Author – publish and manage their own posts, and upload files. Cannot touch anyone else’s content.
  • Contributor – write and edit their own drafts but cannot publish, and importantly cannot upload images.
  • Subscriber – read, and manage their own profile. This is the role almost every member of a membership site should hold.

The Contributor upload restriction surprises people constantly. A contributor writing a post cannot add a picture to it. If that is the workflow you want, you need a custom role.

What each role can and cannot do

The table below is the version most people are actually looking for. Super Admin is omitted because it can do everything on every site in a network.

CapabilityAdminEditorAuthorContributorSubscriber
Manage plugins and themesYesNoNoNoNo
Change site settingsYesNoNoNoNo
Manage other usersYesNoNoNoNo
Edit anyone’s postsYesYesNoNoNo
Publish pagesYesYesNoNoNo
Moderate commentsYesYesNoNoNo
Manage categories and tagsYesYesNoNoNo
Publish own postsYesYesYesNoNo
Upload filesYesYesYesNoNo
Write own draftsYesYesYesYesNo
Edit own profileYesYesYesYesYes
Read the siteYesYesYesYesYes
Default WordPress role capabilities. Plugins frequently add their own capabilities on top of these.

Two rows deserve attention. Upload files is the one that breaks editorial workflows, because a Contributor genuinely cannot attach an image to their own draft. Edit anyone’s posts is the line between Author and Editor, and it is the reason Editor should not be handed out casually on a site with several writers.

Roles are bundles; capabilities do the work

A role is just a named set of capabilities such as edit_posts, publish_posts, manage_options or upload_files. When WordPress decides whether you may do something it checks the capability, never the role name. That distinction matters, because it means you can grant one extra capability to a role without promoting anyone.

The practical rule: if someone needs one more permission, add that capability. If they need a genuinely different job description, build a role.

When to build a custom role

Custom roles earn their keep whenever a real-world job does not match a default. Common ones:

  • Shop manager who handles orders but must not edit pages.
  • Contributor who can upload images, which is Contributor plus upload_files.
  • Member with a front-end profile but no dashboard access at all.
  • Client reviewer who can read drafts and comment without publishing anything.

You can add roles in code with add_role(), or with a role editor plugin if the site is handed to a non-developer. Either way, write down what each custom role is for. An undocumented custom role is a security problem two years from now.

The mistakes that cause real damage

  • Administrator as a shortcut. Someone needs to edit one setting, so they get full file-editing rights forever.
  • Never revoking access. Freelancers, ex-staff and the developer from three agencies ago all still have accounts.
  • Editing core roles in place. Changing what Editor means confuses every future developer. Make a new role instead.
  • Assuming hidden means restricted. Hiding a menu item does not remove the capability, and the URL still works.

Ready to try it?

UserPro maps roles to front-end experience: what each role sees on their profile, which directories they appear in, and whether they reach wp-admin at all. Try the live demo, see the full feature list, or get UserPro on CodeCanyon for a one-off licence fee.

Keeping members out of the dashboard

On a membership site, subscribers logging into wp-admin looks unprofessional and confuses people. The fix has two halves, and doing only the first is the common error. Hide the admin bar for the role, and redirect wp-admin requests for that role to a front-end account page. Hiding the bar alone leaves the dashboard perfectly reachable by anyone who types the URL.

Would rather someone else did it?

Complex permission matrices, especially ones that have to satisfy an audit, are worth getting a second pair of eyes on. Brief a vetted WordPress developer and get a fixed quote before any work starts.

Frequently asked questions

What is the difference between a role and a capability?

A capability is a single permission such as publish_posts. A role is a named bundle of them. WordPress checks capabilities, not role names.

Can one user hold two roles?

Not through the standard interface, which allows one role per user per site. Plugins can grant additional capabilities, and on multisite a user can hold different roles on different sites in the network.

Which role should members of a membership site get?

Subscriber, or a custom role based on it. Anything higher gives dashboard access you almost certainly do not intend.


Managing WordPress users

Try UserPro on your own site

UserPro gives WordPress front-end profiles, custom registration, social login and a searchable member directory in a single plugin. Try the live demo or see what a licence costs.

Want it built for you instead? Work with a developer who knows the plugin.

Leave a Comment