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_post
capacité 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_posts
et edit_private_posts
vous 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_User
classe 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' capabilities
argument 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.