问题描述
什么是 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。