Once in a while, there is a client who needs some stuff you never really needed. During the past months, all of a sudden there were several projects that required all kinds of custom user roles. It took some research and testing to figure out what I feel works best for me. Check out my favorites:
First and foremost, creating new user roles with different capabilities:
Members by Justin Tadlock
See Members plugin in WordPress repository
This is probably the best known of my list. Members allows you to edit or create user roles according to the needs of your project without writing everything to your functions.php.
There was one major update late last summer (2015). I feel it is much more clearly arranged now and easier to use, even for admin users that are not so well acquainted with WordPress capabilities.
One important change: You now are able to explicitly assign or deny a capability.
Another nice feature that was also added with that update is that it allows you to assign several roles to one user. Sounds strange at first, is rather helpful in an environment where people might have different functions within a company or an association and every function has a different user role.
Getting plugins to play with users who are not full-blown admins still isn’t easy if the plugin’s author didn’t prepare for that case. But still, using members will take you most of the way.
There is also an additional (premium) plugin called Members Role Levels which allows you to also assign user levels to your new users. Even though user levels have been deprecated for quite a while now, the core WordPress author drop-down on the “edit posts” screen requires user levels. If you don’t assign user levels to your custom user roles the users get the user level 0 and are not displayed in the author drop-down.
User Switching by John Blackbourn
See User Switching plugin in WordPress repository
Well, it does what it says – it allows the admin user to switch user accounts. This way I am able to check whether capabilities are assigned correctly without actually having to sign in with that user’s credentials. Saves a lot of time and allows for quick fine-tuning of user roles.
It also allows you to simulate log out which can come in handy in order to check the login process, content that is restricted to some user roles etc.
WP Users Media by Damir Calusic and Stanislav Khromov
See WP Users Media plugin in WordPress Repository
Websites with many users tend to collect a lot of media files. This can be overwhelming, especially for inexperienced users.
Depending on the project, users might not even be supposed to share media files.
With WP Users Media your WordPress users are only able to see the files they uploaded. This way you shun conflicts concerning media files (Ever had grown-ups bicker over who which image belongs to and who was allowed to delete it?!). Besides media files are a lot easier to handle for every editor.
There aren’t any real settings except to decide whether the admin will be able to see all media files or not.