問題描述
什麼是 map_meta_cap 濾波器的使用?這個過濾器沒有在任何地方記錄。我有一個不清楚的想法可能是什麼:
用於將用户的權限映射到帖子上的操作。
究竟是什麼意思?如果可能,請給出一些正確使用的示例代碼示例。
最佳解決方案
此過濾器允許您擴展 map_meta_cap()功能。該函數由 WP_User->has_cap()調用,以將元功能轉換為一個或多個原始功能。
例如,你想知道當前用户是否應該允許編輯當前的帖子,edit_post 的元功能。這取決於一些因素:用户的帖子的作者?帖子已經發布了嗎?帖子標記為私人嗎?原始功能是 edit_posts,edit_published_posts,edit_others_posts 和 edit_private_posts:您可以將它們分配給 user roles 。 map_meta_cap()檢查作者和帖子的狀態,並返回用户必須具有的正確的原始功能集,以允許編輯帖子 (如果該帖子是由其他人撰寫併發布的,它將返回 array('edit_others_posts', 'edit_published_posts'),因此用户必須同時擁有能力繼續) 。
添加這種元功能和原始功能的想法可以讓基礎 WP_User 類免於發佈和發佈狀態以及其他任何知識,並且只關注功能。實際的轉換是在外部的功能,map_meta_cap()。
過濾器 map_meta_cap 允許您擴展功能,例如使用自定義帖子時。如果您設置 register_post_type 的 capabilities 參數,但 Justin Tadlock 和 Prospress plugin 提到的文章提供了完整的示例,我相信基本的支持是提供的。但是,如果您願意,您可以自定義它,以完全改變功能系統。
次佳解決方案
此過濾器可用於映射自定義帖子類型的元功能。本文中有一個很好的代碼示例:
http://justintadlock.com/archives/2010/07/10/meta-capabilities-for-custom-post-types
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。