Only administrator allow to access wp-admin and login?

I would like to do that only administrator(role) allow to login with wp-admin not any other role, other uses like(editor,author) are login from front end and it’s working fine but i would like only administrator can login through wp-admin.

I have used ultimate member plug in for front end login.
Ultimate Plugin link

Read More

also i have used below code for access wp-admin only for administrator(role) but it’s not working.

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

Related posts

4 comments

  1. Thank you guys for your help, I am answering my own question hope this will help others too.

    I have referred this link https://developer.wordpress.org/reference/functions/wp_authenticate/

    I have solved this with hook wp_authenticate

     add_action( 'wp_authenticate' , 'check_custom_authentication' );
      function check_custom_authentication ( $username ) {
    
        $username;
         $user = new WP_User($username);
         $user_role_member=$user->roles[0];
    
    
    
        if($user_role_member == 'author' || $user_role_member == 'editor'){
            session_destroy();
            wp_redirect( home_url() );
            exit;
        }
    
     }
    
  2. add_action( 'admin_init', 'redirect_none_admin' );
    
    function redirect_none_admin(){
    
     if(is_admin() && current_user_can(activate_plugins)){
        //...
     }else{
         wp_redirect(home_url());
     }
    }
    

    i tested this one and it worked i think it is simple and easy
    you can find Roles and Capabilities here

  3. If anyone will need the same here is code that allows only administrators, authors and editors to login using /wp-login.php

    //------------- This website is read only - so only staff can log in  -------------
    add_filter( 'authenticate', 'myplugin_auth_signon', 30, 3 );
    function myplugin_auth_signon( $user, $username, $password ) {
        $user_role_member=$user->roles[0];
        if(!in_array($user_role_member,array('administrator','author','editor'))){
             wp_logout();
             return new WP_Error( 'broke', __( "This website is read only for regular users", "your_wp_domain_name" ) );
            exit;
        }else{
            return $user;   
        }
    }
    //------------- this website is read only - so staff can log in  ------------------
    

    You can addremove roles in the array above array(‘administrator’,’author’,’editor’)

  4. Try this

    add_action( 'admin_init', 'redirect_non_admin_users' );
    /**
     * Redirect non-admin users to home page
     *
     * This function is attached to the 'admin_init' action hook.
     */
    function redirect_non_admin_users() {
        if ( is_admin() !== false) {
            wp_redirect( home_url() );
            exit;
        }
    }
    

Comments are closed.