问题描述

什么是 map_meta_cap 滤波器的使用?这个过滤器没有在任何地方记录。我有一个不清楚的想法可能是什么:

用于将用户的权限映射到帖子上的操作。

究竟是什么意思?如果可能,请给出一些正确使用的示例代码示例。

最佳解决方案

此过滤器允许您扩展 map_meta_cap()功能。该函数由 WP_User->has_cap()调用,以将元功能转换为一个或多个原始功能。

例如,你想知道当前用户是否应该允许编辑当前的帖子,edit_post 的元功能。这取决于一些因素:用户的帖子的作者?帖子已经发布了吗?帖子标记为私人吗?原始功能是 edit_postsedit_published_postsedit_others_postsedit_private_posts:您可以将它们分配给 user rolesmap_meta_cap()检查作者和帖子的状态,并返回用户必须具有的正确的原始功能集,以允许编辑帖子 (如果该帖子是由其他人撰写并发布的,它将返回 array('edit_others_posts', 'edit_published_posts'),因此用户必须同时拥有能力继续) 。

添加这种元功能和原始功能的想法可以让基础 WP_User 类免于发布和发布状态以及其他任何知识,并且只关注功能。实际的转换是在外部的功能,map_meta_cap()

过滤器 map_meta_cap 允许您扩展功能,例如使用自定义帖子时。如果您设置 register_post_typecapabilities 参数,但 Justin TadlockProspress plugin 提到的文章提供了完整的示例,我相信基本的支持是提供的。但是,如果您愿意,您可以自定义它,以完全改变功能系统。

次佳解决方案

此过滤器可用于映射自定义帖子类型的元功能。本文中有一个很好的代码示例:

http://justintadlock.com/archives/2010/07/10/meta-capabilities-for-custom-post-types

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。