map_meta_cap过滤器有什么用?


20

map_meta_cap过滤器有什么用?此过滤器未在任何地方记录。我对它可能是什么还不清楚:

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

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

Answers:


25

这个过滤器允许你扩展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器使您可以扩展功能,例如在使用自定义帖子时。我相信,如果您设置的capabilities参数,将提供基本的支持register_post_type,但是Justin TadlockProspress插件提到的文章提供了完整的示例。但是,您可以根据需要对其进行自定义,以完全翻转功能系统。



2

这是功能过滤器map_meta_cap()。从描述上看,该函数似乎写出了传递给更具体的常规功能(can_do_stuff)(如果是帖子的作者,则为can_do_this_stuffcan_do_that_stuff_also),并在需要时检查各种条件。

不幸的是,它没有在Codex中记录,并且在WP 3.0.1源代码中找不到该函数的单个直接调用。

您是否曾经使用过此功能或想将其用于某些用途?我认为,由于似乎没有使用它,因此可能有更新更好的方法可以使用此功能。


这个插件的作者似乎是使用它: github.com/Prospress/Prospress/blob/master/pp-posts/...
rsman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.