web-dev-qa-db-fra.com

Types de publication personnalisés - Type de capacité

J'ai développé un plugin de type de publication personnalisé pour mes propres besoins et je souhaite comprendre un peu mieux les capacités relatives aux types de publication personnalisés avant de poursuivre. Malheureusement, le Codex Wordpress ne m'éclaircit pas vraiment.

Je ne comprends tout simplement pas ce que les fonctionnalités font réellement en ce qui concerne les types de publication personnalisés.

Par exemple, lorsque je crée un type d'article personnalisé appelé "livre" et que j'utilise "livre" en tant que type capacité, il génère les 7 capacités primitives suivantes:

[edit_post]          => edit_book
[read_post]          => read_book
[delete_post]        => delete_book
[edit_posts]         => edit_books
[edit_others_posts]  => edit_others_books
[publish_posts]      => publish_books
[read_private_posts] => read_private_books

Maintenant, puis-je créer n'importe quel type de capacité que j'aime? Par exemple pourrais-je faire ceci:

[random_capability]  => edit_book

Alors que n'importe quel rôle d'utilisateur qui a la capacité de edit_book peut également avoir l'autorisation de la capacité aléatoire?

J'ai essayé de l'expérimenter en créant deux types de publication personnalisés: book et fantasy-book.

J'ai donné book à random_capability puis j'ai dit à fantasy-book d'utiliser book comme type de capacité. Maintenant, je crois comprendre que cela tirerait des capacités de livres (y compris random_capability) et donnerait cette capacité à fantasy-book, n'est-ce pas?

En pratique, ça ne marche pas. Je pense que capacité_type devrait tirer les capacités de tout type que vous lui donnez, ou créer de nouvelles capacités si ce type n'existe pas encore.

Si ce n'est pas le cas, je ne sais pas du tout que capacite_type fonctionne et je n'ai rien trouvé à ce sujet. Quelqu'un at-il une connaissance à ce sujet?

Toute aide est grandement appréciée.

2
jasonaburton

Je conviens avec vous que le codex n'est pas une aide précieuse à ce sujet. Découvrez les informations sur les capacités sous register_post_type - il faut une réécriture sérieuse.

Si je comprends bien, seuls page et post peuvent être utilisés de la manière que vous suggérez (et en fait post est utilisé par défaut en l'absence d'un paramètre défini. type de capacité).

Bien sûr, en créant votre book version de toutes les capitales habituelles, vous vous permettez d’attribuer des fonctionnalités spécifiques à votre type de publication personnalisé, soit dans votre propre code, soit via un plugin tel que members .

Vous pouvez créer toutes les fonctionnalités de votre choix, mais je ne suis pas sûr de pouvoir le faire à ce stade. Ce que j'ai tendance à faire, est d'attribuer un plafond personnalisé à un rôle:

$role = get_role( 'administrator' );
$role->add_cap( 'access_awesomeness' );

Je le ferais probablement sur activation du plugin , les majuscules étant écrites dans la base de données, pourquoi le faire plus d'une fois.

Votre plugin peut alors vérifier si l'utilisateur actuel a la permission de faire n'importe quoi avec:

if (current_user_can( 'access_awesomeness' )) { ...

Vous pouvez également l'utiliser lorsque vous ajoutez une autre autorisation, par exemple:

add_menu_page( $page_title, $menu_title, 'access_awesomeness', $menu_slug, $function, $icon_url, $position );

Je ne suis pas sûr que cela réponde parfaitement à votre question, mais c'est la valeur de mes 2 cents.

3
vancoder