角色和元功能之间有何区别?何时使用map_meta_cap()过滤器


8

我对以下事情感到非常困惑:

  1. 角色和元功能之间的差异,
  2. 元和原始功能之间的差异,
  3. 何时使用map_meta_cap()过滤器。

在很多情况下,我将WP现有或自定义功能添加到WP现有或自定义角色中,期望它开箱即用且在大多数情况下不起作用。

我看到有人提到map_meta_cap()过滤器,但是我找不到很好的解释,它实际上是做什么的,什么时候必须使用它,何时才能使用。

我希望这是有道理的。

我将非常感谢能够很好地解释这些问题的解释或与资源的链接。

谢谢大沙



贾斯汀·塔德洛克(Justin Tadlock)的帖子最终成为了我最受益的信息来源。
贾斯汀·贝尔

我的回答对您有帮助吗?请接受并给予好评,如果它是有帮助的
PMPR

Answers:


3

角色和元功能之间的区别

这将是更好的要求比较RoleCapabilities,不只是Meta capabilities,但作为一个简单的答案:

A Role定义了一组被分配了角色的用户可以执行的任务。

Capabilities 被分配给 Roles

元和原始功能之间的区别?

元功能

edit_postread_postdelete_post,据说是Meta Capabilities因为它们取决于上下文,例如正在编辑/读取/删除的帖子。如果您说某个用户具有edit_post能力,那是没有意义的,因为有人会问您:他/他可以编辑哪个帖子?

原始功能

这些功能edit_posts不依赖任何上下文,是用户固有的。如果某人有能力edit_posts,则可以编辑帖子。

什么时候使用map_meta_cap()过滤器?

当您使用来注册新的帖子类型时register_post_type ,您可以使用一个选项capability_type,其功能类似于?您可能只是说post,这意味着您的能力类似于post职位类型。

例如,如果您需要更多自定义,则可以说bookarray( 'book', 'books' )(相同),例如,具有以下功能:

capabilities' => array(
  'edit_post'          => 'edit_book', 
  'read_post'          => 'read_book', 
  'delete_post'        => 'delete_book', 
  'edit_posts'         => 'edit_books', 
  'edit_others_posts'  => 'edit_others_books', 
  'publish_posts'      => 'publish_books',       
  'read_private_posts' => 'read_private_books', 
  'create_posts'       => 'edit_books', 
)

capability_type用作数组时,例如array('story','stories'),第一个元素将用于单数功能,第二个数组元素将用于复数功能。

通过map_meta_cap()调用该功能WP_User->has_cap()将元功能转换为一个或多个原始功能。

在post_type注册map_meta_capregister_post_type,中还有一个参数具有相同的作用。


...If somebody has edit_posts capabality, she/he can edit posts...但是哪个/谁发布的?
T.Todua '19
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.