在本站之前發(fā)布的文章中,介紹過不用插件定制修改 WordPress 角色的權(quán)限的方法,如果想針對某種需求的用戶新建一個角色,而不是修改默認(rèn)角色的權(quán)限,可以用 WordPress 的add_role方法添加角色,添加角色的時候,直接繼承現(xiàn)有角色的權(quán)限,然后再根據(jù)需求添加或減少權(quán)限就可以了。

下面的代碼是我在WooCommerce的 shop_manager 權(quán)限的基礎(chǔ)上,新建了一個合作者的角色,此角色只能訪問WooCommerce的訂單和商品頁面,文章、頁面、評論和導(dǎo)出權(quán)限都沒有。我們來看一下代碼。
// 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’角色的權(quán)限新建一個角色。
$partner = add_role('partner','Partner',$shop_manager->capabilities);
$partner = get_role('partner');
// 移除新角色的一些不需要的權(quán)限
$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的訂單和商品了,其他內(nèi)容都訪問不了。


