I am trying to remove the admin bar from a theme front end of a theme.
I found the following code block:
add_filter( 'show_admin_bar', '__return_false' );
remove_action( 'personal_options', '_admin_bar_preferences' );
Which works fine. However I wanted to add a choice for the user, so that I can add a permanent code block to my boilerplate theme, and allow users to toggle the admin bar off and on.
I have successfully added the toggle in the admin area, and called back the value successfully, however, when I test for the value in order to control the callback of the admin bar, the admin bar goes, but the CSS applied to the HTML element (margin-top: 28px !important;
) remains, leaving a 28px gap in the top of my theme.
Here is the code block I am using to call the value back, and respond accordingly:
function block_admin(){
$show = get_option('admin_bar_');
$show = $show['admin_bar_toggle'];
if (!$show || $show != 'on'){
add_filter( 'show_admin_bar', '__return_false' );
remove_action( 'personal_options', '_admin_bar_preferences' );
}
}
add_action('init', 'block_admin');
Suggestion
By requirement, my custom option (using register_setting
) is not initialised until the admin_menu
hook is launched, whilst the block_admin
is launched on init
. However, I don’t think this is the issue as I don’t think get_option
is dependent on the setting being registered, but rather the option existing (or not) in the database.
There is already an per-user-option to disable the admin-bar in the latest WordPress versions. It can be found in the user profile settings:
â¦/wp-admin/profile.php (click on your name after logging in)
Had you tried
show_admin_bar(false)
? From quick look at code is should kill admin bar and it is safe to run very early (on load actually).Just launching the function at an earlier point solved the issue
Have you saved your settings, so that they do exist in the database?
Also: what if you change this:
…to this:
Not sure that matches you req.
But here is plugin to toogle admin bar on off globaly. Why not have a look 🙂
http://wordpress.org/extend/plugins/global-admin-bar-hide-or-remove/