Define a central variable for the custom post type: public $post_type_1 = 'archiv';
and use this on add new capabilities:
$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
);
Also i add this new capabilties objects to the differnet default roles, only on activation of the plugin:
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();
But, you must also unregister this objects, when the plugin will be uninstalled.
You can see an example on this gist: https://gist.github.com/978690