web-dev-qa-db-fra.com

Quelle est la différence entre les capacités de rôle et de méta? Quand utiliser le filtre map_meta_cap ()

Je deviens très confus au sujet des choses suivantes:

  1. différence entre les capacités de rôle et méta,
  2. différence entre les capacités Meta et Primitive,
  3. quand utiliser le filtre map_meta_cap().

Il y avait beaucoup de situations où j'ajoute WP des fonctionnalités existantes ou personnalisées à l'un des rôles WP existants ou personnalisés, en espérant que cela fonctionne correctement et que la plupart du temps, cela ne fonctionne pas t.

Je vois que les gens mentionnent le filtre map_meta_cap(), mais je ne trouve pas de bonne explication sur ce qu’il fait réellement et quand dois-je l’utiliser, et quand les fonctionnalités fonctionneront immédiatement.

J'espère que cela à du sens.

J'apprécierais énormément les explications ou les liens vers des ressources qui expliquent bien cela.

Merci, Dasha

8
dashaluna

différence entre les capacités de rôle et méta

Ce serait mieux de demander la comparaison Role avec Capabilities, pas seulement Meta capabilities, mais simplement:

Role définit un ensemble de tâches qu'un utilisateur auquel le rôle est autorisé à effectuer est autorisé.

Capabilities sont affectés à Roles

différence entre les capacités méta et primitive?

Méta capacités

edit_post, read_post et delete_post sont dits être Meta Capabilities car ils dépendent du contexte, par exemple le message en cours de modification/lecture/suppression. Cela n'a aucun sens si vous dites qu'un utilisateur a la capacité edit_post, car quelqu'un vous demandera: il/elle peut éditer quelle publication?

Capacités primitives

Ce sont des fonctionnalités telles que edit_posts qui ne dépendent d'aucun contexte et qui sont intrinsèques à l'utilisateur. Si quelqu'un a la capacité edit_posts, il/elle peut éditer des publications.

quand utiliser le filtre map_meta_cap ()?

Lorsque vous enregistrez un nouveau post type avec register_post_type , vous avez une option à utiliser pour capability_type qui indique quelles sont les fonctionnalités, similaires à? Là, vous pouvez simplement dire post, ce qui signifie que vos capacités sont similaires à celles de post type de publication.

Toutefois, si vous avez besoin de plus de personnalisation, vous pouvez indiquer book ou array( 'book', 'books' ) (identique), par exemple, pour disposer des fonctionnalités suivantes:

capabilities' => array(
  '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', 
  'create_posts'       => 'edit_books', 
)

Lorsque vous utilisez capability_type en tant que tableau, par exemple: array ('story', 'stories') le premier élément sera utilisé pour les capacités singulières et le second élément pour les capacités plurielles.

La fonction map_meta_cap() est appelée par WP_User->has_cap() pour convertir une méta fonctionnalité en une ou plusieurs fonctionnalités primitives.

Il existe également un paramètre map_meta_cap dans register_post_type, qui fait la même chose, lors de l’enregistrement post_type.

3
Pmpr