Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I am trying to restrict access to wp-admin so that only administrators and editors are allowed. At the moment I am using this function:

function restrict_admin(){
    //if not administrator, kill WordPress execution and provide a message
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( __('You are not allowed to access this part of the site') );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

But this does the job only for administrator; editors are not allowed to access this part of the site. What can I do?

share|improve this question

migrated from superuser.com May 9 '13 at 20:16

This question came from our site for computer enthusiasts and power users.

    
What is different from the default behavior of Wordpress and what you want to implement exactly –  Ramhound May 9 '13 at 13:07
    
I want that editors could view information from wp-admin, but not having permission to change it. –  user2358350 May 9 '13 at 13:11
    
Seems like the default permission system built-into Wordpress should handle a situation like this. There already is a tested and proven plug-in that allows you adjust the roles: wordpress.org/support/plugin/user-role-editor and a description of the default roles: en.support.wordpress.com/user-roles/#changing-user-roles just took my until now to realize you didn't write the code you posted. You can also add new roles: wordpress.org/extend/plugins/members and efine the exact permissins you want. –  Ramhound May 9 '13 at 13:32

1 Answer 1

You're correct in that you should be checking for a capability. However, manage options is only given to administrators by default. You should check against a capability that both editors and administrators have such as delete_others_posts.

function restrict_admin(){
//if not administrator, kill WordPress execution and provide a message
    if ( ! current_user_can( 'delete_others_posts' ) ) {
        wp_die( __('You are not allowed to access this part of the site') );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

See roles and capabilities from the codex.

share|improve this answer

Your Answer

 
discard

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