You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress隐藏管理员导航栏代码失效问题求助

解决管理员导航栏隐藏失效的问题

原代码通过移除订阅者的read权限间接隐藏管理员导航栏,这种方法并不符合WordPress官方逻辑——管理员导航栏的显示与否,核心依赖show_admin_bar钩子及用户后台访问权限校验,而非单纯的read权限。WordPress版本更新后调整了权限校验逻辑,导致该方法失效。

以下是两种可靠的修改方案:

方案一:针对特定角色禁用导航栏

通过show_admin_bar钩子,精准判断用户角色后关闭导航栏显示:

function hide_admin_bar_for_subscribers() {
    if ( current_user_can( 'subscriber' ) ) {
        add_filter( 'show_admin_bar', '__return_false' );
    }
}
add_action( 'init', 'hide_admin_bar_for_subscribers' );

如果需要给多个角色(比如订阅者、投稿者)隐藏导航栏,可修改判断逻辑:

function hide_admin_bar_for_selected_roles() {
    $current_user = wp_get_current_user();
    // 定义需要隐藏导航栏的角色列表
    $restricted_roles = array( 'subscriber', 'contributor' );
    if ( array_intersect( $restricted_roles, $current_user->roles ) ) {
        add_filter( 'show_admin_bar', '__return_false' );
    }
}
add_action( 'init', 'hide_admin_bar_for_selected_roles' );

方案二:全局隐藏非管理员的导航栏

如果需要给除管理员外的所有用户隐藏导航栏,可简化判断逻辑:

function hide_admin_bar_for_non_admins() {
    if ( ! current_user_can( 'manage_options' ) ) {
        add_filter( 'show_admin_bar', '__return_false' );
    }
}
add_action( 'init', 'hide_admin_bar_for_non_admins' );

替换说明

删除你原来的remove_read_wpse_93843函数及对应的add_action代码,将上述任一方案的代码添加到主题的functions.php文件或自定义插件中即可。

内容的提问来源于stack exchange,提问作者DaveyBear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:03:52