Par exemple, si je crée un type de publication appelé "destinations", est-ce que cela crée automatiquement des fonctionnalités telles que "edit_destinations" ou "delete_destinations"?
Il ne crée pas automatiquement cette fonctionnalité dans le sens où aucune nouvelle fonctionnalité n'a été enregistrée avec WordPress. À la place, il utilise par défaut les fonctionnalités attribuées à la création/édition de publications. Par exemple, si un auteur se connecte, il pourra créer et publier une nouvelle entrée de destination par défaut.
Vous pouvez remplacer ceci par la valeur capabilities
lorsque vous utilisez register_post_type
. Voir l'excellent tutoriel de Justin Tadlock ici http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress
Je définis une variable centrale pour le type de publication personnalisé: public $post_type_1 = 'archiv';
et l'utiliser pour ajouter de nouvelles capacités:
$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
);
J'ajoute aussi ces nouveaux objets aux rôles par défaut, uniquement lors de l'activation du 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();
Mais, vous devez également désenregistrer ces objets, si le plugin doit être désinstallé.
Vous pouvez voir un exemple sur cette Gist: https://Gist.github.com/978690