How to Block Dashboard Access for Non-Admins

In WordPress, if you don’t want non-admins to even be able to access the wp-admin dashboard than here is solutions. This code will allow you to control if the admin bar should show for the user and if a user should be redirected when trying to access the dashboard.

Here i show you different case. Use it as per your requirement. Add this code in your theme’s functions.php file of your active child theme (or theme) and save the file.

Note : You can change the home_url() to something else if you want to redirect them somewhere else. For example, to redirect them to the shop page you can use home_url( ‘/shop’ ) or if you have a profile page home_url( ‘/profile’ ).

Removing the Admin Bar for Non-Admins

function hide_admin_bar( $show ) {
    if ( ! current_user_can( 'administrator' ) ) {
        return false;
    }
    return $show;
}
add_filter( 'show_admin_bar', 'hide_admin_bar' );

Block Dashboard Access for Non-Admins

function block_wp_admin() {
    if ( is_admin() && ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
        wp_safe_redirect( home_url('/shop') );
        exit;
    }
}
add_action( 'admin_init', 'block_wp_admin' );

Redirecting users after login

function login_redirect( $url ) {
    return home_url( '/profile' );
}
add_filter( 'login_redirect', 'login_redirect' );

Redirecting users after logout

function logout_redirect( $url ) {
    return home_url( '/profile' );
}
add_filter( 'logout_redirect', 'logout_redirect' );

Leave a Comment

Scroll to Top