I’m a big fan of the Members plugin by Justin Tadlock. It builds upon the core WordPress user role and capability functionality in a clean and robust way that makes it my go-to choice when setting up simple membership based sites for clients.
The plugin itself provides some super handy features including:
- Role Manager: Allows you to edit, create, and delete roles as well as capabilities for these roles.
- Content Permissions: Gives you control over which users (by role) have access to post content.
- Shortcodes: Shortcodes to control who has access to content.
- Widgets: A login form widget and users widget to show in your theme’s sidebars.
- Private Site: You can make your site and its feed completely private if you want.
Whilst working on or a few sites I’ve often needed to extend upon this feature set by providing site managers/admins (call them what you will) with the ability to:
- Hide the menu items of pages/post which have been restricted to certain users (by role) – so that if a user doesn’t have access to a particular page it isn’t visible in the menu structure.
- Hide individual widgets for certain users (by role) – so that if a user doesn’t access to view the widget its simply not visible in the sidebar/widgetized area.
Pretty useful features right? Well because they’ve been so useful for me I’ve bundled each up into their own plugins and made them available through github:
One day when I get a chance I’ll probably reach out to Justin and submit a pull request to the main Members github repo to bundle these couple of features into the main plugin (as options for the content permission feature) – but for the time being I’m happy just considering these as prototypes to determine popularity (much in the same way the core developers now develop a lot of the additional WordPress functionality as standalone plugins before merging with core).
Hope you find these useful.