{"id":90016,"date":"2026-04-05T10:00:00","date_gmt":"2026-04-05T10:00:00","guid":{"rendered":"https:\/\/blaminhor.com\/?p=90016"},"modified":"2026-02-13T16:33:32","modified_gmt":"2026-02-13T15:33:32","slug":"manage-wordpress-user-roles","status":"publish","type":"post","link":"https:\/\/blaminhor.com\/p\/m\/news\/manage-wordpress-user-roles\/","title":{"rendered":"How to Manage User Roles and Capabilities in WordPress"},"content":{"rendered":"\n<p>WordPress ships with five user roles: Administrator, Editor, Author, Contributor, and Subscriber. Each has a fixed set of capabilities. For a simple blog, this is fine. But the moment you need a \u00ab\u00a0Support Agent\u00a0\u00bb who can edit pages but not publish them, or a \u00ab\u00a0Shop Manager\u00a0\u00bb who can manage products but not install plugins, you&rsquo;re stuck.<\/p>\n\n\n\n<p>Managing <strong>WordPress user roles<\/strong> beyond the defaults requires either custom code or a dedicated tool.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Limitations of Default WordPress Roles<\/h2>\n\n\n\n<p>Out of the box, WordPress doesn&rsquo;t let you:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modify the capabilities of existing roles.<\/li>\n\n\n\n<li>Create new roles from the admin interface.<\/li>\n\n\n\n<li>Grant specific capabilities to individual users.<\/li>\n\n\n\n<li>Export or backup your role configuration.<\/li>\n<\/ul>\n\n\n\n<p>To do any of this, you&rsquo;d need to write PHP code in your <code>functions.php<\/code> file \u2014 and remember to remove it after it runs once, because role changes are stored in the database.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Edit WordPress User Roles and Capabilities<\/h2>\n\n\n\n<p>Activate the <strong>User Role Editor<\/strong> module in <a href=\"https:\/\/wp.blaminhor.com\">Blaminhor Essentials<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create Custom Roles<\/h3>\n\n\n\n<p>Click \u00ab\u00a0Add Role,\u00a0\u00bb name it, and select capabilities. Start from scratch or <strong>clone an existing role<\/strong> as a starting point. Cloning the Editor role and removing a few capabilities is often faster than building from zero.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Edit Capabilities Per Role<\/h3>\n\n\n\n<p>Every WordPress capability is listed with a <strong>human-readable label<\/strong> \u2014 not just technical slugs like <code>edit_others_posts<\/code>. Check or uncheck capabilities for any role.<\/p>\n\n\n\n<p>Need your Editor to manage WooCommerce products? Add the relevant capabilities. Want to prevent Authors from deleting their own posts? Uncheck it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Per-User Capability Overrides<\/h3>\n\n\n\n<p>Sometimes one user needs a specific permission that their role doesn&rsquo;t include. Instead of creating a whole new role for a single person, <strong>grant or revoke individual capabilities<\/strong> for that specific user. The override takes priority over their role.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Import and Export Roles<\/h3>\n\n\n\n<p>Save your entire <strong>WordPress user roles<\/strong> configuration as a JSON file. Move it to another site, share it with a client, or keep it as a backup before making changes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Reset to WordPress Defaults<\/h3>\n\n\n\n<p>If your role configuration gets messy \u2014 maybe after uninstalling a plugin that added custom roles and capabilities \u2014 <strong>reset everything to the WordPress defaults<\/strong> with one click.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A Practical Example<\/h2>\n\n\n\n<p>You run a site with three editors and one intern.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Clone the \u00ab\u00a0Editor\u00a0\u00bb role.<\/li>\n\n\n\n<li>Name the clone \u00ab\u00a0Intern.\u00a0\u00bb<\/li>\n\n\n\n<li>Remove <code>publish_posts<\/code>, <code>publish_pages<\/code>, <code>delete_others_posts<\/code>, and <code>delete_others_pages<\/code>.<\/li>\n\n\n\n<li>Assign the intern to this new role.<\/li>\n<\/ol>\n\n\n\n<p>The intern can write drafts and edit their own content, but can&rsquo;t publish anything or delete other people&rsquo;s work. No code, no <code>functions.php<\/code> edits, no risk of breaking something on update.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Full Control Over Who Can Do What<\/h2>\n\n\n\n<p>WordPress&rsquo;s default roles are a starting point. For real-world sites with teams, clients, and specific access requirements, you need granular control over <strong>user roles and capabilities<\/strong>.<\/p>\n\n\n\n<p>Part of <a href=\"https:\/\/wordpress.org\/plugins\/blaminhor-essentials\/\">Blaminhor Essentials<\/a>, free on WordPress.org.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Create custom roles, edit capabilities per user, and export your configuration as JSON. Visual interface, no code needed.<\/p>\n","protected":false},"author":1,"featured_media":90050,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80],"tags":[],"class_list":["post-90016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projects"],"_links":{"self":[{"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/posts\/90016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/comments?post=90016"}],"version-history":[{"count":2,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/posts\/90016\/revisions"}],"predecessor-version":[{"id":90067,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/posts\/90016\/revisions\/90067"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/media\/90050"}],"wp:attachment":[{"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/media?parent=90016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/categories?post=90016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blaminhor.com\/p\/m\/news\/wp-json\/wp\/v2\/tags?post=90016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}