Problems with removing admin bar
-
30-10-2019 - |
Frage
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.
Keine korrekte Lösung