对特定角色隐藏顶部管理栏的新按钮

时间:2019-10-14 作者:Ângelo Rigo

如何在顶部管理栏中隐藏“新建按钮”,这是发布新帖子、新页面等的快捷方式。

我将隐藏一个特定的角色,但作为WordPress的新手,我正在寻找我必须编辑的功能或档案。

我查看wp管理和菜单。php或菜单标题。php。

1 个回复
最合适的回答,由SO网友:butlerblog 整理而成

要删除的项目是一个;节点;。查看WP工具栏的生成HTML时,列表项的ID(<li>) 包含节点。

因此,在这种情况下;添加新的“;工具栏项,您将在HTML中看到以下内容:

<li id="wp-admin-bar-new-content" class="menupop">
“之后的一切”;wp管理栏-“;ID中是节点的名称。在这种情况下,“;新内容;。

有两种方法可用于删除节点。首先,您可以使用admin_bar_menu 行动钩,用于移除;“新内容”;节点如下:

add_action( \'admin_bar_menu\', function( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( \'new-content\' );
},999);
或者您可以使用wp_before_admin_bar_render 行动挂钩:

add_action( \'wp_before_admin_bar_render\', function() {
    global $wp_admin_bar;
    $wp_admin_bar->remove_node( \'new-content\' );
},999);
您需要添加一些额外的逻辑,因为您希望为特定的用户角色执行此操作。我建议您在这里使用;“能力”;而不是一个“;角色;。你会在网上看到很多不正确使用的例子current_user_can() 检查角色名称。这只能用于检查功能。(See this answer.)

您没有指明要限制节点的角色(或功能),但例如,假设您希望节点仅在用户具有;“编辑帖子”;能力。然后,您的操作函数将如下所示:

add_action( \'admin_bar_menu\', function( $wp_admin_bar ) {
    if ( ! current_user_can( \'edit_posts\' ) ) {
        $wp_admin_bar->remove_node( \'new-content\' );
    }
},999);
如果用户没有“编辑帖子”功能,则会删除“新内容”节点。

相关推荐