map_meta_cap
滤波器有什么用?此过滤器未在任何地方记录。我不清楚它的含义:用于将用户的权限映射到帖子的操作。
到底是什么意思?如果可能,请提供正确用法的示例代码示例。
#1 楼
该过滤器使您可以扩展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
参数,将提供基本的支持,但是Justin Tadlock和Prospress插件提到的文章提供了完整的示例。但是,您可以根据需要对其进行自定义,以完全翻转功能系统。#2 楼
此过滤器可用于映射自定义帖子类型的元功能。本文提供了一个很好的代码示例:http://justintadlock.com/archives/2010/07/10/meta-capabilities-for-custom-post-types
#3 楼
这是功能map_meta_cap()
的过滤器。从描述上看,此函数似乎写出了传递给更具体的常规功能(can_do_stuff)(如果是帖子的作者,则是can_do_this_stuff和can_do_that_stuff_also),并在需要时检查各种条件。不幸的是,它未在Codex和I中记录在WP 3.0.1源代码中找不到该函数的单个直接调用。
您是否遇到过使用此函数或想将其用于某些用途吗?我认为因为似乎没有使用它,所以可能有更新更好的方法来实现此功能。
评论
该插件作者似乎正在使用它:github.com/Prospress/Prospress/blob/master/pp-posts/…
–rsman
2010-09-12 8:39