有没有比检查用户登录来显示或隐藏管理员栏更好的方法?

时间:2016-06-10 作者:sjingo

我的问题是,对于不是管理员的用户,adminbar开始消失。我找到了一个变通方法(代码下方),可以检查他们是否在关闭前登录</head> 标签

有没有人遇到过类似的问题并找到了根本原因,或者有没有更好的方法来隐藏adminbar?

<?php
if ( is_user_logged_in() ) {
    show_admin_bar( true );
}
elseif ( ! is_user_logged_in() ) {     
    show_admin_bar( false );
}
?>
</head>
<body <?php body_class(); ?>>

2 个回复
SO网友:Howdy_McGee

实际上有一个show_admin_bar 钩子,您可以始终返回true或false。我还没有遇到过管理栏随机消失的问题。通常在我的网站上,我喜欢为管理员关闭它:

/**
 * Remove Admin Bar For Administrators
 * Or anyone who can activate plugins
 */
function theme_hide_admin_bar() {
    return ( is_user_logged_in() && ! current_user_can( \'activate_plugins\' ) ); // returns true or false
}
add_filter( \'show_admin_bar\', \'theme_hide_admin_bar\' );
或者,只需添加以下内容即可永久关闭:

add_filter( \'show_admin_bar\', \'__return_false\' );
始终显示管理栏:

add_filter( \'show_admin_bar\', \'__return_true\' );

SO网友:Dan Kinchen

我有两个选择给你。这两个函数都将此代码放在主题函数中。php文件。

// Disable WordPress Admin Bar for all users but admins.
add_action(\'after_setup_theme\', \'remove_admin_bar\');
function remove_admin_bar(){
    if(!current_user_can(\'administrator\') && !is_admin()){
        show_admin_bar(false);
    }
}

// Hide admin bar from all users
show_admin_bar(false);