There are many code snippets out there describing how to disable Admin bar in WordPress, but most of them doesn’t solve all the issues. So here’s the all in one solution.
Disable Admin Bar for everyone
// Disable Admin Bar for everyone if (!function_exists('df_disable_admin_bar')) { function df_disable_admin_bar() { // for the admin page remove_action('admin_footer', 'wp_admin_bar_render', 1000); // for the front-end remove_action('wp_footer', 'wp_admin_bar_render', 1000); // css override for the admin page function remove_admin_bar_style_backend() { echo '<style>body.admin-bar #wpcontent, body.admin-bar #adminmenu { padding-top: 0px !important; }</style>'; } add_filter('admin_head','remove_admin_bar_style_backend'); // css override for the frontend function remove_admin_bar_style_frontend() { echo '<style type="text/css" media="screen"> html { margin-top: 0px !important; } * html body { margin-top: 0px !important; } </style>'; } add_filter('wp_head','remove_admin_bar_style_frontend', 99); } } add_action('init','df_disable_admin_bar');
Disable Admin Bar for everyone but administrators
This piece of code is sligtly different. We run the function only if currently logged-in user doesn’t have ‘manage_options’ capability (which is equal to admins)
// Disable Admin Bar for everyone but administrators if (!function_exists('df_disable_admin_bar')) { function df_disable_admin_bar() { if (!current_user_can('manage_options')) { // for the admin page remove_action('admin_footer', 'wp_admin_bar_render', 1000); // for the front-end remove_action('wp_footer', 'wp_admin_bar_render', 1000); // css override for the admin page function remove_admin_bar_style_backend() { echo '<style>body.admin-bar #wpcontent, body.admin-bar #adminmenu { padding-top: 0px !important; }</style>'; } add_filter('admin_head','remove_admin_bar_style_backend'); // css override for the frontend function remove_admin_bar_style_frontend() { echo '<style type="text/css" media="screen"> html { margin-top: 0px !important; } * html body { margin-top: 0px !important; } </style>'; } add_filter('wp_head','remove_admin_bar_style_frontend', 99); } } } add_action('init','df_disable_admin_bar');
Disable WP Admin Bar for specific users
Now we’re removing admin bar only for specific users, using user ID
// Disable Admin Bar for specific user if (!function_exists('df_disable_admin_bar')) { function df_disable_admin_bar() { // we're getting current user ID $user = get_current_user_id(); // and removeing admin bar for user with ID 123 if ($user == 123) { // for the admin page remove_action('admin_footer', 'wp_admin_bar_render', 1000); // for the front-end remove_action('wp_footer', 'wp_admin_bar_render', 1000); // css override for the admin page function remove_admin_bar_style_backend() { echo '<style>body.admin-bar #wpcontent, body.admin-bar #adminmenu { padding-top: 0px !important; }</style>'; } add_filter('admin_head','remove_admin_bar_style_backend'); // css override for the frontend function remove_admin_bar_style_frontend() { echo '<style type="text/css" media="screen"> html { margin-top: 0px !important; } * html body { margin-top: 0px !important; } </style>'; } add_filter('wp_head','remove_admin_bar_style_frontend', 99); } } } add_action('init','df_disable_admin_bar');
Leave a Reply