map_meta_cap滤波器有什么用?此过滤器未在任何地方记录。我不清楚它的含义:

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

到底是什么意思?如果可能,请提供正确用法的示例代码示例。

#1 楼

该过滤器使您可以扩展map_meta_cap()功能。 WP_User->has_cap()调用此功能将一个元功能转换为一个或多个原始功能。例如,您想知道是否应允许当前用户编辑当前帖子,即edit_post元功能。 。这取决于一些因素:用户是帖子的作者吗?该帖子已经发布吗?该帖子是否标记为私人?基本功能是edit_postsedit_published_postsedit_others_postsedit_private_posts:您可以将它们分配给用户角色。 map_meta_cap()检查帖子的作者和状态,并返回该用户必须允许编辑帖子的一组正确的原始功能(如果帖子是由其他人撰写并发布的,它将返回array('edit_others_posts', 'edit_published_posts'),因此用户必须同时拥有功能继续)。

通过添加元功能和原始功能的这种想法,您可以使基本WP_User类不受发布和发布状态等方面的知识的影响,而只关注功能。实际转换是在外部函数map_meta_cap()中进行的。

过滤器map_meta_cap允许您扩展功能,例如在使用自定义帖子时。我相信,如果您设置capabilitiesregister_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