À quoi sert le filtre map_meta_cap?

20

À quoi sert le map_meta_capfiltre? Ce filtre n'est documenté nulle part. J'ai une idée peu claire de ce que cela pourrait être:

Utilisé pour mapper les autorisations de l'utilisateur aux opérations sur les publications.

À quoi cela sert-il exactement? Si possible, veuillez donner un exemple de code exemple de son bon usage.

rsman
la source

Réponses:

25

Ce filtre vous permet d'étendre la map_meta_cap()fonction . Cette fonction est appelée parWP_User->has_cap() pour convertir une méta-capacité en une ou plusieurs capacités primitives .

Par exemple, vous voulez savoir si l'utilisateur actuel doit être autorisé à modifier le message actuel, la edit_postcapacité méta . Cela dépend de certains facteurs: l'utilisateur est-il l'auteur de l'article? Le message est-il déjà publié? Le message est-il marqué comme privé? Les capacités primitives sont edit_posts, edit_published_posts, edit_others_postset edit_private_postsvous pouvez les affecter aux rôles d'utilisateur . map_meta_cap()vérifie l'auteur et l'état du message et renvoie l'ensemble correct de capacités primitives que cet utilisateur doit avoir pour permettre la modification du message (si le message est écrit par quelqu'un d'autre et publié, il reviendrait array('edit_others_posts', 'edit_published_posts'), donc l'utilisateur doit avoir les deux capacités pour continuer).

L'ajout de cette idée de méta-capacités et de capacités primitives vous permet de garder la WP_Userclasse de base à l' abri de la connaissance des publications et des statuts de publication et autres, et de vous concentrer uniquement sur les capacités. La conversion réelle est dans une fonction externe, map_meta_cap().

Le filtremap_meta_cap vous permet d'étendre la fonctionnalité, par exemple lors de l'utilisation de publications personnalisées. Je crois que le support de base est fourni si vous définissez l' capabilitiesargument de register_post_type, mais l'article mentionné par Justin Tadlock et le plugin Prospress en fournissent des exemples complets. Mais vous pouvez le personnaliser pour retourner complètement le système de capacités, si vous le souhaitez.

Jan Fabry
la source
2

C'est un filtre de fonction map_meta_cap(). D'après la description, cette fonction semble écrire la capacité générale ( can_do_stuff ) passée dans plus spécifique (si l'auteur du message puis can_do_this_stuff et can_do_that_stuff_also ), vérifiant diverses conditions si nécessaire.

Malheureusement, elle n'est pas documentée dans Codex et je ne trouve pas un seul appel direct de cette fonction dans la source WP 3.0.1.

Avez-vous rencontré l'utilisation de cette fonction ou souhaitez-vous l'utiliser pour quelque chose? Je suppose qu'étant donné qu'il ne semble pas être utilisé, il existe probablement des moyens plus récents et meilleurs pour cette fonctionnalité.

Rarst
la source
Cet auteur du plug-in semble l'utiliser: github.com/Prospress/Prospress/blob/master/pp-posts/…
rsman