我为自定义帖子类型定义了一个中心变量:public $post_type_1 = \'archiv\';
并将其用于添加新功能:
$capabilities = array(
\'edit_post\' => \'edit_\' . $this->post_type_1,
\'edit_posts\' => \'edit_\' . $this->post_type_1 . \'s\',
\'edit_others_posts\' => \'edit_others_\' . $this->post_type_1 . \'s\',
\'publish_posts\' => \'publish_\' . $this->post_type_1 . \'s\',
\'read_post\' => \'read_\' . $this->post_type_1,
\'read_private_posts\' => \'read_private_\' . $this->post_type_1 . \'s\',
\'delete_post\' => \'delete_\' . $this->post_type_1
);
此外,我仅在激活插件时,才将此新功能对象添加到不同的默认角色:
foreach ( $this->todo_roles as $role ) {
$wp_roles->add_cap( $role, \'edit_\' . $this->post_type_1 );
$wp_roles->add_cap( $role, \'edit_\' . $this->post_type_1 . \'s\' );
$wp_roles->add_cap( $role, \'edit_others_\' . $this->post_type_1 . \'s\' );
$wp_roles->add_cap( $role, \'publish_\' . $this->post_type_1 . \'s\' );
$wp_roles->add_cap( $role, \'read_\' . $this->post_type_1 );
$wp_roles->add_cap( $role, \'read_private_\' . $this->post_type_1 . \'s\' );
$wp_roles->add_cap( $role, \'delete_\' . $this->post_type_1 );
$wp_roles->add_cap( $role, \'manage_\' . $this->taxonomy_type_1 );
}
foreach ( $this->read_roles as $role ) {
$wp_roles->add_cap( $role, \'read_\' . $this->post_type_1 );
$wp_roles->add_cap( $role, \'read_\' . $this->post_type_1 );
$wp_roles->add_cap( $role, \'read_\' . $this->post_type_1 );
}
global $wp_rewrite;
$wp_rewrite->flush_rules();
但是,如果要卸载插件,还必须注销此对象。
您可以在此要点上看到一个示例:https://gist.github.com/978690