Each WordPress site can have multiple users. What a user can and cannot do is determined by their Role, which comprises a specific set of capabilities, each governing whether or not specific actions are allowed through the administrative interface. More powerful roles have very few limitations in terms of editing and publishing content and configuring site settings (site title, widgets, custom menus, etc.). Less powerful roles are only allowed to carry out a limited subset of content management operations. While these two basic types of roles are adequate for many, they are not sufficient for some sites.
The BU Section Editing plugin works by introducing a new user role — Section Editor — intended for users that require limited editing & publishing capabilities.
Section editors can’t do much until they have been given permission to edit content. Rather than granting content editing permissions to users directly, they are instead assigned to a group. These groups (Section Groups) are defined by the set of permissions they hold, and the list of members who are given authority through them. They can also be given a name and description to help represent their function. Using the group model allows for permissions to be shared by many users. Users can belong to multiple section groups, and can be added or removed from a group at any time.
Once a Section Editor belongs to a group, their editing and publishing capabilities will be determined by their Section Group memberships. Permissions are cumulative, so section editors are allowed to edit any content that is allowed through their combined group memberships.
What types of content I can grant permissions to?
By default, WordPress ships with two main content types — Posts and Pages. Both of these content types are referred to generically as posts, and each is an example of a specific Post Type. Post Types can be grouped in to one of two categories: hierarchical and flat. Hierarchical post types (like Pages) allow for parent-child relationships, whereas flat post types (like Posts) only permit a single level of content. “Section” in BU Section Editing refers to a page that has children — something that is only possible with hierarchical post types.
This plugin allows for permissions to be set for each of these post types, and can also support custom post types that may be defined by plugins or themes. For example, the BU Profiles plugin uses a custom post type called “Profile” to control editing of profile details.
What can a Section Editor do?
By default, not much. Without a Section Group granting them permissions, a Section Editor cannot edit any published content. They can edit drafts, but they are not allowed to publish them. They can also add new posts, but they cannot publish them unless they are inside a section that they are allowed to edit. For hierarchical post types, such as Pages, Section Editors are not permitted to move published content to a top-level location.
Their capabilties for the rest of the WordPress administrative interface are limited as well. Section Editors can not:
- Delete items from the Media Library
- Manage widgets, custom menus, or anything else found under Site Design
- See anything under Users with the exception of their own profile
- Change any settings found under Settings
What about non-published content?
For the most part, the BU Section Editing plugin is intended for controlling the editing and movement of published content. What other post statuses exist in WordPress?
- Draft — Draft posts are not visibile to anyone unless they are logged in and have a special preview URL. A post can be saved as a draft by clicking the Save Draft button in the Publish metabox.
- Pending — Pending posts are drafts that are considered ready for publishing by their author and should be reviewed and published by someone authorized. Users who do not have the ability to publish a post can place it in the pending state by clicking the Submit for Review button in the Publish metabox.
- Trash — Trashed posts cannot be viewed or edited by anyone until they are restored from the trash. A post can be moved to the trash by clicking the Move to Trash link in the Publish metabox.
You may see other statuses, but these are the most relevant in terms of this workflow.