MAP_META_CAP过滤器的用途是什么?
-
16-10-2019 - |
题
什么用 map_meta_cap
筛选?该过滤器在任何地方都没有记录在任何地方。我对可能是什么不清楚:
用于将用户的权限映射到帖子上的操作。
到底意味着什么?如果可能的话,请给出一些示例代码示例的正确用法。
解决方案
该过滤器使您可以扩展 这 map_meta_cap()
功能. 。此功能 被称为 WP_User->has_cap()
转换 元能力 到一个或多个 原始功能.
例如,您想知道是否应允许当前用户编辑当前帖子, 这 edit_post
元能力. 。这取决于某些因素:用户是帖子的作者吗?帖子已经发布了吗?该帖子标记为私人吗?原始功能是 edit_posts
, edit_published_posts
, edit_others_posts
和 edit_private_posts
: :您可以将它们分配给 用户角色. map_meta_cap()
检查作者和帖子状态,并返回正确的集合 原始功能 该用户必须允许帖子编辑(如果帖子是由其他人撰写并已发布的,它将返回 array('edit_others_posts', 'edit_published_posts')
, ,因此用户必须具有既有能力继续)。
添加这个想法 元功能 和 原始功能 允许您保持基础 WP_User
班级没有帖子和帖子状态以及其他内容的知识,而只关注功能。实际转换在外部功能中, map_meta_cap()
.
过滤器 map_meta_cap
允许您扩展功能,例如使用自定义帖子。我相信如果您设置 capabilities
争论 register_post_type
, ,但是提到的文章 贾斯汀·塔德洛克 和 ProSpress插件 提供完整的例子。但是,如果您需要,您可以自定义它以完全将功能系统转换。
其他提示
该过滤器可用于映射自定义邮政类型的元功能。本文中有一个很好的代码示例:
http://justintadlock.com/archives/2010/07/10/meta-capabilities-for-custom-post-types
这是函数的过滤器 map_meta_cap()
. 。从描述中,此功能似乎写出了一般能力(can_do_stuff)传递到更具体的(如果Post的作者那样) can_do_this_stuff 和 can_do_that_stuff_also),根据需要检查各种条件。
不幸的是,它没有在Codex中记录,我找不到WP 3.0.1源中此功能的单个直接调用。
您是否遇到了此功能的用法或想将其用于某些东西?我认为,由于它似乎没有使用,因此可能有更新,更好的方法来实现此功能。