我正在尝试从主题的前端删除管理栏。
我发现以下代码块:
add_filter( \'show_admin_bar\', \'__return_false\' );
remove_action( \'personal_options\', \'_admin_bar_preferences\' );
这很好用<然而,我想为用户添加一个选项,这样我就可以为我的样板主题添加一个永久代码块,并允许用户开关管理栏。
我已经成功地在管理区域中添加了切换,并成功地回调了该值,但是,当我测试该值以控制管理栏的回调时,管理栏会消失,但CSS应用于HTML元素(margin-top: 28px !important;
) 保留,在我的主题顶部留下28像素的间隙。
下面是我用来回调值并做出相应响应的代码块:
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
根据需要,我的自定义选项(使用
register_setting
) 在
admin_menu
吊钩启动时
block_admin
于启动
init
. 然而,我认为这不是问题,因为我认为
get_option
取决于正在注册的设置,但取决于数据库中是否存在选项。
最合适的回答,由SO网友:Mild Fuzz 整理而成
只是在更早的时候启动该函数就解决了这个问题
function block_admin(){
$show = get_option(\'admin_bar_\');
$show = $show[\'admin_bar_toggle\'];
fb::log($show,\'shoe\');
if (!$show || $show != \'on\'){
add_filter( \'show_admin_bar\', \'__return_false\' );
remove_action( \'personal_options\', \'_admin_bar_preferences\' );
}
}
add_action(\'after_setup_theme\',\'block_admin\');