在本站之前发布的文章中,介绍过不用插件定制修改 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的订单和商品了,其他内容都访问不了。