如何修改Shop Manager权限:禁止访问WooCommerce设置且仅可查看商品
解决Shop Manager权限定制问题
你不需要用manage_woocommerce这个大权限,它会直接解锁所有WooCommerce管理功能,包括设置和商品编辑。正确的做法是拆分细粒度权限:保留订单、报表的访问/管理权限,只给商品查看权限,同时移除所有商品编辑和WooCommerce设置相关的权限。
以下是完整的代码实现:
function we_update_shopmanager() { // 获取Shop Manager角色对象 $shop_manager = get_role( 'shop_manager' ); if ( ! $shop_manager ) return; // -------------------------- // 1. 移除不需要的权限 // -------------------------- $remove_caps = array( // 移除商品编辑/删除/发布权限 'edit_products', 'edit_others_products', 'publish_products', 'delete_products', 'delete_others_products', 'edit_private_products', 'delete_private_products', 'edit_published_products', 'delete_published_products', // 移除WooCommerce设置权限 'manage_woocommerce', // 移除其他不需要的默认权限(可选) 'delete_pages', 'edit_pages' ); foreach ( $remove_caps as $cap ) { $shop_manager->remove_cap( $cap ); } // -------------------------- // 2. 添加需要的权限 // -------------------------- $add_caps = array( // 商品查看权限(仅允许查看) 'read_products', 'read_private_products', // 订单管理权限(查看、编辑、处理订单) 'edit_shop_orders', 'edit_others_shop_orders', 'read_shop_orders', 'read_private_shop_orders', 'delete_shop_orders', 'delete_others_shop_orders', 'edit_published_shop_orders', 'delete_published_shop_orders', // 报表查看权限 'view_woocommerce_reports', 'view_woocommerce_sales_reports', 'view_woocommerce_product_reports', 'view_woocommerce_customer_reports', // 订单统计查看权限 'view_woocommerce_order_stats' ); foreach ( $add_caps as $cap ) { $shop_manager->add_cap( $cap ); } } // 在WooCommerce初始化角色之后执行(优先级11) add_action( 'init', 'we_update_shopmanager', 11 );
关键说明:
- 商品权限:只保留
read_products和read_private_products,确保Shop Manager只能查看商品,无法编辑、新增或删除。 - 订单权限:添加全套订单管理权限,允许处理订单(编辑状态、标记完成、删除等操作)。
- 报表权限:添加各类报表查看权限,确保能正常访问WooCommerce的报表板块。
- 避开
manage_woocommerce:完全不添加这个权限,就能直接阻止Shop Manager进入WooCommerce设置页面。
代码生效后,记得用Shop Manager账号登录测试:确认能访问订单、报表,无法进入WooCommerce设置,且只能查看不能编辑商品。
内容的提问来源于stack exchange,提问作者user2679476
相关产品推荐
相关产品推荐

