我对以下事情感到非常困惑:
- 角色和元功能之间的差异,
- 元和原始功能之间的差异,
- 何时使用
map_meta_cap()
过滤器。
在很多情况下,我将WP现有或自定义功能添加到WP现有或自定义角色中,期望它开箱即用且在大多数情况下不起作用。
我看到有人提到map_meta_cap()
过滤器,但是我找不到很好的解释,它实际上是做什么的,什么时候必须使用它,何时才能使用。
我希望这是有道理的。
我将非常感谢能够很好地解释这些问题的解释或与资源的链接。
谢谢大沙
我对以下事情感到非常困惑:
map_meta_cap()
过滤器。在很多情况下,我将WP现有或自定义功能添加到WP现有或自定义角色中,期望它开箱即用且在大多数情况下不起作用。
我看到有人提到map_meta_cap()
过滤器,但是我找不到很好的解释,它实际上是做什么的,什么时候必须使用它,何时才能使用。
我希望这是有道理的。
我将非常感谢能够很好地解释这些问题的解释或与资源的链接。
谢谢大沙
Answers:
角色和元功能之间的区别
这将是更好的要求比较Role
与Capabilities
,不只是Meta capabilities
,但作为一个简单的答案:
A Role
定义了一组被分配了角色的用户可以执行的任务。
Capabilities
被分配给 Roles
元和原始功能之间的区别?
元功能
edit_post
,read_post
和delete_post
,据说是Meta Capabilities
因为它们取决于上下文,例如正在编辑/读取/删除的帖子。如果您说某个用户具有edit_post
能力,那是没有意义的,因为有人会问您:他/他可以编辑哪个帖子?
原始功能
这些功能edit_posts
不依赖任何上下文,是用户固有的。如果某人有能力edit_posts
,则可以编辑帖子。
什么时候使用map_meta_cap()过滤器?
当您使用来注册新的帖子类型时register_post_type
,您可以使用一个选项capability_type
,其功能类似于?您可能只是说post
,这意味着您的能力类似于post
职位类型。
例如,如果您需要更多自定义,则可以说book
或array( '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_cap
中register_post_type
,中还有一个参数具有相同的作用。
...If somebody has edit_posts capabality, she/he can edit posts...
但是哪个/谁发布的?