基于角色删除管理栏节点

时间:2016-11-15 作者:Taylor Foster

我有一个自定义角色,grocery, 我希望在登录此角色时从顶部管理栏中删除“新内容”(新下拉列表)节点。我有以下功能,但它目前正在删除包括管理员在内的所有角色的功能。希望找到一种方法将此限制为“杂货店”自定义角色。

功能。php

add_action( \'admin_bar_menu\', \'remove_new_content_menu\', 999 );

function remove_new_content_menu( $wp_admin_bar ) {
    $wp_admin_bar->remove_node( \'new-content\' );
}

2 个回复
SO网友:jgraup

WP_User 有一个roles array.

使用获取当前用户wp_get_current_user() 并检查您的角色是否在阵列中。

<小时>

add_action( \'admin_bar_menu\', \'remove_new_content_menu\', PHP_INT_MAX );

function remove_new_content_menu( $wp_admin_bar ) {

    // get the current user
    $user = wp_get_current_user();

    // define roles that cannot see the `new content` button
    $blacklisted_roles = array(\'grocery\', \'subscriber\');

    // remove the button if the current user has a blacklisted role
    if( array_intersect($blacklisted_roles, $user->roles ) ) {
        $wp_admin_bar->remove_node( \'new-content\' );
    }
}

SO网友:mistertaylor

您只需要检查当前用户的角色

add_action( \'admin_bar_menu\', \'remove_new_content_menu\', 999 );

function remove_new_content_menu( $wp_admin_bar ) {
   $user = wp_get_current_user();
   if ( $user && in_array( \'grocery\', (array) $user->roles ) ) {
        $wp_admin_bar->remove_node( \'new-content\' );
    }
}
尽管更好的选择可能是检查特定功能,因为角色名称可能会更改。