本篇文章更新時間:2023/06/29
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
之前的系列都是寫「WordPress」的後台整理術。這次會寫「WooCommerce」的後台整理術有一個最關鍵的原因:只有商店管理員 Shop Manager 可以去管理到 WordPress 使用者。
只是!
這功能只能針對「客戶」(Customer)來編輯,其他的角色都無法去編輯。
- 為什麼要開通所有使用者的編輯功能?
因為我在 WordPress 權限架構上的設計是除了管理員之外,次高等級權限的使用者會是客戶端使用的「管理員」。純 WordPress 網站使用的話就是「編輯」(Editor),而有 WooCommerce 電商功能的話就是「商店管理員」。
如果定義是多用戶協作的網站的話,「管理員」就有需求來配置使用者帳號,所以開權限出來就有需求囉!
function mxp_map_meta_cap_for_users_editor($caps, $cap, $user_id, $args) {
$check_caps = [
'edit_user',
'remove_user',
'promote_user',
'delete_user',
'delete_users',
];
// 判斷是不是管理員,是就不動
if (!in_array($cap, $check_caps) || current_user_can('administrator')) {
return $caps;
}
// 不是管理員的話,把「不允許」標籤移除
$caps = array_filter($caps, function ($e) {
return ($e !== 'do_not_allow');
});
// 排除管理員帳號的授權
$userId = isset($args[0]) ? $args[0] : false;
$other = get_user_by('id', $userId);
if ($other && $other->has_cap('administrator')) {
$caps[] = 'do_not_allow';
}
return $caps;
}
add_filter('map_meta_cap', 'mxp_map_meta_cap_for_users_editor', 11, 4);
將上述程式碼放置於(子)主題中就可以使用了。
後記
雖不是每個 WooCommerce 站都會這樣用,但這個設定符合整理後台給客戶使用的一個功能環節,就也列進來筆記吧~
通常這需求會搭配的外掛是 WP User Avatar | 使用者個人資料圖片 為每個站上使用者設定大頭貼的外掛 與 Import Users from CSV 讓客戶能夠去批次新增網站用戶帳號。