Quelle est la différence entre les fonctions Rôle et Méta; Quand utiliser le filtre map_meta_cap ()

8

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

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

Dans de nombreuses situations, j'ajoute des fonctionnalités WP existantes ou personnalisées à des rôles WP existants ou personnalisés, en m'attendant à ce que cela fonctionne immédiatement et la plupart du temps, ce n'est pas le cas.

Je vois que les gens parlent du map_meta_cap()filtre, mais je ne peux pas trouver une bonne explication de ce qu'il fait réellement et quand dois-je l'utiliser et quand les capacités fonctionneront hors de la boîte.

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

dashaluna
la source
doublon possible de Quelle est l'utilisation du filtre map_meta_cap?
John Blackbourn
Ce message de Justin Tadlock a finalement été la source d'informations dont j'ai le plus bénéficié.
Justin Bell
Ma réponse vous a-t-elle été utile?! S'il vous plaît accepter et upvote si elle était utile
RPGP

Réponses:

3

différence entre le rôle et les capacités Meta

Ce serait mieux de demander la comparaison Roleavec Capabilities, non seulement Meta capabilities, mais comme une réponse simple:

A Roledéfinit un ensemble de tâches qu'un utilisateur affecté au rôle est autorisé à effectuer.

Capabilities sont affectés à Roles

différence entre les capacités Meta et Primitive?

Capacités méta

edit_post,, read_postet delete_postsont censés l'être Meta Capabilitiesparce qu'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 des edit_postcapacités, car quelqu'un vous demandera: il / elle peut modifier quel message?

Capacités primitives

Ce sont des capacités comme celles edit_postsqui ne dépendent d'aucun contexte et sont intrinsèques à l'utilisateur. Si quelqu'un a des edit_postscapacités, il / elle peut éditer des articles.

quand utiliser le filtre map_meta_cap ()?

Lorsque vous enregistrez un nouveau type de publication à l' aide de register_post_type , vous avez une option à utiliser pour capability_typelaquelle dit, quelles sont les capacités, similaires à? Là, vous pouvez simplement dire post, ce qui signifie que vos capacités sont similaires à celles du posttype de message.

Bu si vous avez besoin de plus de personnalisation, vous pouvez dire bookou array( 'book', 'books' )(la même chose), par exemple, pour avoir les capacité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', 
)

Lors de l'utilisation en capability_typetant que tableau, par exemple tableau («histoire», «histoires»), le premier élément sera utilisé pour les capacités singulières et le second élément de tableau pour les capacités plurielles.

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

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

Pmpr
la source
...If somebody has edit_posts capabality, she/he can edit posts...mais qui / dont les postes?
T.Todua