如何针对特定用户角色从 WordPress 管理员端隐藏条带?

How can I hide stripe from WordPress admin side for specific user role?

我正在使用用户角色编辑器并尝试为特定用户隐藏此条带网关

我应该在用户编辑角色的设置中检查什么,这样我才能看到订单但看不到条带。

您使用的“Stripe Gateway”插件似乎不提供按角色选择性允许或拒绝使用的功能。今天测试了其中的一些,我还没有找到一个。所以(很棒的)User Role Editor 插件可能无法帮助您完成此任务。但不要绝望!还有其他方法:-)

如果我没理解错的话,您想对一个或多个 roles/users 隐藏 Stripe 设置(因此实时 API 密钥是安全的),对吧?从角色中删除它是最简单的。

实际上,涉及两个步骤。一种是隐藏您提到的“Stripe Gateway”菜单,当然,但 Stripe 设置也可以在 WooCommerce 付款选项卡下找到。我们还需要为 user/role 隐藏该选项卡。

可能有更优雅的解决方案,但我可以提供一个完成此任务的建议。

  1. 要隐藏不需要的“条纹”菜单,请安装 Adminimize 插件并激活。
  2. 然后仪表板-设置-管理-菜单选项
  3. 出现的屏幕将以 table 格式显示在左侧,所有仪表板菜单,其中应该包括您的“Stripe Gateway”。右边是角色列表。
  4. 在 Adminimize table 中找到不需要的“Stripe Gateway”菜单,并在 table 右侧为 Shop Manager 角色勾选“Deactivate for Shop Manager” 设置 复选框。
  5. 记得向下滚动并单击“更新选项”按钮以保存插件设置。

希望仪表板中该角色的菜单现已消失。

现在我找不到您正在使用的确切 Stripe 插件,但在此处使用另一个进行说明以生成屏幕截图,以说明我所写的内容(link 屏幕截图)。 Adminimize - hiding a menu from Shop manager role

第二步是删除 WooCommerce 商店经理角色的付款选项卡。这已得到回答 。使用 post 中的代码,将以下内容添加到子主题的 functions.php(如果您使用的是子主题)。

    add_filter( 'woocommerce_settings_tabs_array', 'remove_woocommerce_setting_tabs', 200, 1 );
function remove_woocommerce_setting_tabs( $tabs ) {
    // Declare the tabs we want to hide
    $tabs_to_hide = array(
        'Payments',
        );


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

    // Check if user is a shop-manager
    if ( isset( $user->roles[0] ) && $user->roles[0] == 'shop_manager' ) {

        // Remove the tabs we want to hide
        $tabs = array_diff($tabs, $tabs_to_hide);
    }

    return $tabs;
}

此处说明了结果(link 截屏)。 Hiding a tab in WooCommerce

我相信有更多经验丰富的 WooCommerce 人员可以提供更好的答案,但我希望这会有所帮助。

所以我创建了这个:

add_action( 'admin_menu', 'remove_admin_menu_items', 999 );

function remove_admin_menu_items() {

    // global $woocommerce;
    global $submenu;
    $current_user = wp_get_current_user();
    $role = $current_user->roles;
    // To hide settings by role :any_new_role
    if ($role[0] == 'any_new_role') {
        // users menu
        unset( $submenu['users.php'][5] ); // removes list of users
        unset( $submenu['users.php'][15] ); // removes edit your profile
   
        remove_menu_page('wc_stripe'); // Hiding stripe gateway settings
        remove_menu_page('woocommerce'); // Hiding woocommerce settings
        remove_menu_page('automatewoo'); // Hiding automatewoo settings
        remove_menu_page('jetpack'); // Hiding jetpack settings
    }

}