At its core WordPress is a content creation and management platform. Being able to assign different roles or capabilities to different users in the system is important to help manage a successful website or blog. Not all users within your website should have the same permission levels. First let’s understand the different user roles that WordPress offers by default and then we can try and understand the different settings for publishing content.
User Roles and Capabilities
The 5 default user roles in WordPress are administrator, editor, author, contributor and subscriber. Each user role has a set of capabilities or permissions to perform different tasks:
- Administrators – have full access to all pages and post types as well as many other backend features.
- Editors – can publish and manage posts including those published by other users.
- Authors – can publish and manage their own posts.
- Contributors – can write and manage their own posts but cannot publish them. Users may be assigned this role who are freelance writers or need a manager’s approval before content can be published.
- Subscribers – can only manage their profile. Users may be assigned this role after registering to receive access to restricted content.
All capabilities for each user role and can be redefined or modified with plugins or custom code. New user roles can also be easily added. For instance, the WooCommerce plugin (for managing an ecommerce store) adds two new user roles, shop manager and customer.
Now that we’ve looked at the different user roles, and capabilities of each, we can begin to better understand how content is managed and delivered. All post types in WordPress including posts, pages and custom post types, have the same options for visibility and status. For brevity, “post” will be used in reference to posts, pages and custom post types.
Post Visibility is defined as the level of access required to view the post.
- Public – the post is visible to everyone.
- Password Protected – the post content is hidden behind a password and is not accessible without the correct password. Only the post title is visible to everyone.
- Private – the post is only visible to users with the role of administrator.
Post Status is defined as the “state” of the post. All posts can go through a number of state changes.
- Draft – the post is incomplete. The URL for a post in draft ends with something like this ?p=14406&preview=true.
- Pending Review – the post is awaiting the review of a user with the capability to publish.
- Publish – the post is visible to everyone.
- Future – the post is set to publish at a later date.
In the WordPress admin, visibility and status are defined separately, but in reality they are sort of lumped together in the database. Here are some other post statuses that are not inherently obvious:
- Auto Draft – the post is newly created with no content.
- Inherit – a post revision. By default all post revisions are saved in the database. These settings can be changed in the `wp-config.php` file. All revisions can also be reverted.
- Trash – the post was moved into the trash. (Tip: All posts added to the trash are saved until “permanently deleted” incase it needs to be restored. If a new post is created with the same slug as a post in the trash it will be appended an incrementing number as slugs must be unique. To reuse the slug, permanently delete the post from the trash.)
Plugins or custom code can also extend post status and visibility. We will again use WooCommerce as an example to look at the different visibility options added in addition to the default WordPress visibility. These options are specific to how product pages are visible, but as stated in the description, “The product will always be accessible directly.” This means the product can always be accessed via a direct link.
- Catalog/search – the product is visible everywhere (shop pages, category pages, and search results).
- Catalog – the product is visible in shop pages and category pages but not search results.
- Search – the product is visible only in search results.
- Hidden – the product is visible on the single product page and no other pages.