在本站之前发布的文章中,介绍过不用插件定制修改 WordPress 角色的权限的方法,如果想针对某种需求的用户新建一个角色,而不是修改默认角色的权限,可以用 WordPress 的add_role方法添加角色,添加角色的时候,直接继承现有角色的权限,然后再根据需求添加或减少权限就可以了。
下面的代码是我在WooCommerce的 shop_manager 权限的基础上,新建了一个合作者的角色,此角色只能访问WooCommerce的订单和商品页面,文章、页面、评论和导出权限都没有。我们来看一下代码。
// Remove unnecessary caps for shop manager add_action( 'admin_init', 'remove_shop_caps'); function remove_shop_caps() { // 首先获取WooCommerce的‘shop_manager’角色。 $shop_manager = get_role('shop_manager'); // 然后基于‘shop_manager’角色的权限新建一个角色。 $partner = add_role('partner','Partner',$shop_manager->capabilities); $partner = get_role('partner'); // 移除新角色的一些不需要的权限 $partner->remove_cap( 'edit_comment' ); $partner->remove_cap( 'edit_users' ); $partner->remove_cap( 'edit_pages' ); $partner->remove_cap( 'edit_posts' ); $partner->remove_cap( 'manage_categories' ); $partner->remove_cap( 'export' ); }
把上面的代码粘贴到 functions.php 文件或插件文件中,新建用户的时候,就有了 “Partner” 这个角色,为新用户分配 “Partner” 角色,新用户就只能访问WooCommerce的订单和商品了,其他内容都访问不了。