get_post_type_capabilities
函数
get_post_type_capabilities ( $args )
- 参数
-
-
(object)
$args
Post type registration arguments.- Required: 是
-
(object)
- 返回值
-
- (object) Object with all the capabilities as member variables.
- 相关
-
- register_post_type()
- map_meta_cap()
- 定义位置
-
-
wp-includes/post.php
, line 1838
-
wp-includes/post.php
- 引入
- 3.0.0
- 弃用
- –
从一个文章类型对象中建立一个具有所有帖子类型能力的对象
如果能力没有在’capabilities’参数数组中设置,或者没有提供’capabilities’参数,那么文章类型能力使用’capacity_type’参数作为基础。
capability_type参数可以选择注册为一个数组,第一个值是单数,第二个是复数,例如array(‘story, ‘stories’) 否则,复数形式的值会被加上一个’s’。注册后,capacity_type将始终是一个单数值的字符串。
默认情况下,八个键被接受为权限数组的一部分。
– edit_post、read_post和delete_post是元权限,然后根据上下文,即被编辑/阅读/删除的文章和被检查的用户或角色,一般会被映射到相应的原始权限。因此,这些能力一般不会直接授予用户或角色。
– edit_posts – 控制这个文章类型的对象是否可以被编辑。
– edit_others_posts – 控制是否可以编辑其他用户拥有的这种类型的对象。如果文章类型不支持作者,那么这将与 edit_posts 的行为类似。
– delete_posts – 控制是否可以删除这个文章类型的对象。
– publish_posts – 控制发布该文章类型的对象。
– read_private_posts – 控制是否可以读取私有对象。
这五个原始权限在核心区的不同位置都有检查。还有其他六种原始权限,除了map_meta_cap()外,没有在核心中直接引用,map_meta_cap()将上述三种元权限翻译成一种或多种原始权限,然后必须根据上下文检查用户或角色。
– read – 控制这个文章类型的对象是否可以被读取。
– delete_private_posts – 控制是否可以删除私有对象。
– delete_published_posts – 控制是否可以删除已发布的对象。
– delete_others_posts – 控制是否可以删除由其他用户拥有的对象。如果文章类型不支持作者,那么这将与delete_posts的行为类似。
– edit_private_posts – 控制是否可以编辑私人对象。
– edit_published_posts – 控制是否可以编辑发布的对象。
这些额外的权限只在map_meta_cap()中使用。因此,只有当文章类型在注册时将’map_meta_cap’参数设置为true(默认为false),它们才会被默认分配。
function get_post_type_capabilities( $args ) { if ( ! is_array( $args->capability_type ) ) { $args->capability_type = array( $args->capability_type, $args->capability_type . 's' ); } // Singular base for meta capabilities, plural base for primitive capabilities. list( $singular_base, $plural_base ) = $args->capability_type; $default_capabilities = array( // Meta capabilities. 'edit_post' => 'edit_' . $singular_base, 'read_post' => 'read_' . $singular_base, 'delete_post' => 'delete_' . $singular_base, // Primitive capabilities used outside of map_meta_cap(): 'edit_posts' => 'edit_' . $plural_base, 'edit_others_posts' => 'edit_others_' . $plural_base, 'delete_posts' => 'delete_' . $plural_base, 'publish_posts' => 'publish_' . $plural_base, 'read_private_posts' => 'read_private_' . $plural_base, ); // Primitive capabilities used within map_meta_cap(): if ( $args->map_meta_cap ) { $default_capabilities_for_mapping = array( 'read' => 'read', 'delete_private_posts' => 'delete_private_' . $plural_base, 'delete_published_posts' => 'delete_published_' . $plural_base, 'delete_others_posts' => 'delete_others_' . $plural_base, 'edit_private_posts' => 'edit_private_' . $plural_base, 'edit_published_posts' => 'edit_published_' . $plural_base, ); $default_capabilities = array_merge( $default_capabilities, $default_capabilities_for_mapping ); } $capabilities = array_merge( $default_capabilities, $args->capabilities ); // Post creation capability simply maps to edit_posts by default: if ( ! isset( $capabilities['create_posts'] ) ) { $capabilities['create_posts'] = $capabilities['edit_posts']; } // Remember meta capabilities for future reference. if ( $args->map_meta_cap ) { _post_type_meta_capabilities( $capabilities ); } return (object) $capabilities; }