如果我添加了一个自定义的帖子类型,只是为了获得许可:
register_post_type( \'event\',
array(
\'labels\' => array(…),
\'capability_type\' => [\'event\',\'events\'],
\'map_meta_cap\' => true,
)
);
产生的能力是什么?(单数/复数)
\'read_event\'
\'read_events\'
我找不到一种最有效的变体。在我所有的项目中,我只是将功能加倍,一次是单数,一次是复数。。。但我觉得那太糟糕了。有人能弄清楚什么时候用单数,什么时候用复数吗?
最合适的回答,由SO网友:Jacob Peattie 整理而成
通常情况下,答案就在文档中。在里面the documentation 对于register_post_type()
您将看到:
- \'capability_type\'
(字符串)用于构建读取、编辑和删除功能的字符串。可以作为数组传递,以允许在使用此参数作为构建功能的基础时使用其他复数,例如数组(\'story\',\'stories\')。默认“post” - \'capabilities\'
(数组)此帖子类型的功能数组$默认情况下,capability\\u type用作构建功能的基础。看见get_post_type_capabilities().
So
capability_type
使用提供的单数和复数字符串填充
capabilities
如果我们遵循
that link 至文档
get_post_type_capabilities()
我们可以看到完整的功能列表(重点是我的):
默认情况下,七个键被接受为功能阵列的一部分:
- edit_post, read_post, 和delete_post 是元功能,通常根据上下文映射到相应的基本功能,即正在编辑/读取/删除的帖子和正在检查的用户或角色。因此,这些功能通常不会直接授予用户或角色
- edit_posts – 控制是否可以编辑此帖子类型的对象
- edit_others_posts – 控制是否可以编辑其他用户拥有的此类型的对象。如果帖子类型不支持作者,则其行为类似于edit\\u帖子
- publish_posts – 控制此帖子类型的发布对象
- read_private_posts – 控制是否可以读取私有对象
这四种基本功能在不同位置的core中进行了检查。还有其他七种基本功能在core中没有直接引用,除了
map_meta_cap(), 它将上述三个元功能转换为一个或多个基本功能,然后必须根据上下文对照用户或角色进行检查。
- read – 控制是否可以读取此帖子类型的对象
- delete_posts – 控制是否可以删除此帖子类型的对象
- delete_private_posts – 控制是否可以删除私有对象
- delete_published_posts – 控制是否可以删除已发布的对象
- delete_others_posts – 控制是否可以删除其他用户拥有的对象。如果帖子类型不支持作者,则其行为类似于delete\\u posts
- edit_private_posts – 控制是否可以编辑专用对象
- edit_published_posts – 控制是否可以编辑已发布的对象
因此通过
[\'event\',\'events\']
所有这些功能
post
将创建,但使用
event
(例如。
edit_event
), 以及
posts
将创建,但使用
events
(例如。
edit_events
). 但是,请注意
\'event\'
到
capability_type
将得到完全相同的结果。这是因为如果只传递一个值,WordPress将自动添加
s
复数形式。您需要分别传递单数和复数版本的唯一原因是,如果复数版本不只是相同的加“s”,例如故事vs故事(如果您只传递了
\'story\'
那么复数功能将是
edit_storys
).