Search

Table of Contents

Add Permissions to Custom Post Types

You are here:

A large number of WordPress users have sites with custom post types. Sometimes this is done using custom code. Sometimes it's done with a theme. Sometimes it's done with a plugin.

However, although these methods can provide many features, they rarely deal with permissions.

By default, nearly all custom post types will inherit the same permissions as Posts. So a user in the “Editor” will role will automatically be able to write and edit in your custom post type.

In this guide, I'll show you how to add permissions to your custom post types with PublishPress Capabilities. I'll use the example of a custom post type called “New Posts”.

This guide will show you how to create permissions for your whole post type. If you need more granular permissions, check out this guide to using PublishPress Permissions Pro.


Adding Permissions to the Post Type

  • Make sure you have PublishPress Capabilities installed.
  • Go to “Capabilities” in your WordPress admin area
  • In the top-right corner of the screen, load the user role that you want to customize. In this image below, I’ve chosen the “Editor” role:
Choose a WordPress role to edit permissions for
  • Also in the right sidebar, and check the “New Posts” box under “Type-Specific Capabilities”. Doing this will allow you control the permissions for the New Posts.
  • Click “Update”.
Enabling Permissions for a new WordPress post type

Look in the center of the screen and you can now see custom permissions for your new post type. You can control editing, deletion and reading capabilities for your post type:

Permissions for a new WordPress post type

Note: your custom post type does need the “public” property set to “true”. Here's an example of that “public” property in the function used to create a post type:

$args = array(
    'labels'        => $labels,
    'description'   => 'Holds our products and product specific data',
    'public'        => true,
    'menu_position' => 5,
    'supports'      => array( 'title', 'editor', 'thumbnail', ),
    'has_archive'   => true,
  );

Professional publishing plugins for WordPress! Get PublishPress