WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'd like to prevent certain user roles from accessing the dashboard http://www.openeye.net/wp-admin/ at all. I've moved and restyled user profiles to a new page that's viewable on the site. How would I go about doing this?

share|improve this question
up vote 11 down vote accepted

To lock subscribers and contributors out of the admin:

function wpse23007_redirect(){
  if( is_admin() && !defined('DOING_AJAX') && ( current_user_can('subscriber') || current_user_can('contributor') ) ){

Hope that helps. All roles give the user a capability that is the name of that role, so you can use any role name as a capability.

share|improve this answer
Excellent, however I'm getting a syntax error on the second line. – Zach Shallbetter Jul 14 '11 at 21:23
Oh ok it's related to the extra ( after ('DOING_AJAX') – Zach Shallbetter Jul 14 '11 at 21:58
Oh, sorry; that was intentional. There was supposed to be another one closing at the end. I added it to the answer. – John P Bloch Jul 15 '11 at 15:06
Is there a reason this doesn't work with the 2011 theme and the members plugin? – Zach Shallbetter Sep 9 '11 at 6:36
This doesn't seem to work on network sites, any idea why? – Zach Shallbetter Oct 9 '11 at 21:59

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.