删除管理栏时出现的问题

时间:2011-07-19 作者:Mild Fuzz

我正在尝试从主题的前端删除管理栏。

我发现以下代码块:

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 取决于正在注册的设置,但取决于数据库中是否存在选项。

5 个回复
最合适的回答,由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\');

SO网友:feeela

在最新的Wordpress版本中,已经有一个针对每个用户的选项来禁用管理栏。可以在用户配置文件设置中找到:

…/wp管理员/配置文件。php(登录后单击您的姓名)

SO网友:Rarst

你试过了吗show_admin_bar(false)? 从快速查看代码可以看出,应该杀死管理栏,并且很早运行(实际上是在加载时)是安全的。

SO网友:Chip Bennett

您是否保存了设置,以便它们在数据库中存在?

另外:如果您更改此选项:

if ( ! $show || $show != \'on\' ) {
。。。对此:

if ( ! isset( $show ) || $show != \'on\' ) {

SO网友:Rajeev Vyas

不确定是否符合您的要求。但这里有一个插件可以在globaly上打开管理栏。为什么不看看:)

http://wordpress.org/extend/plugins/global-admin-bar-hide-or-remove/

结束