Quelle est l'utilisation du filtre map_meta_cap?

16

Quelle est l'utilisation du filtre map_meta_cap? Ce filtre n'est documenté nulle part. J'ai une idée incertaine de ce que cela pourrait être:

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

À quoi sert-il exactement? Si possible, donnez un exemple de code illustrant son utilisation correcte.

    
posée rsman 12.09.2010 - 07:52

3 réponses

22

Ce filtre vous permet d’étendre la fonction map_meta_cap() . Cette fonction est appelée par WP_User->has_cap() pour convertir un fichier < em> méta capacité à une ou plusieurs capacités primitives .

Par exemple, vous souhaitez savoir si l'utilisateur actuel doit être autorisé à modifier le message actuel, la capacité méta edit_post . Cela dépend de certains facteurs: l'utilisateur est-il l'auteur du message? 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 le statut de l'article et renvoie le jeu correct de capacités primitives que cet utilisateur doit avoir pour autoriser l'édition de l'article (si l'article est écrit par quelqu'un d'autre et publié, il return array('edit_others_posts', 'edit_published_posts') , l'utilisateur doit donc disposer des deux fonctionnalités pour continuer).

Ajouter cette idée de méta fonctionnalités et de fonctionnalités primitives vous permet de garder la base WP_User class libre de toute connaissance des publications et des statuts de publication et ainsi de suite. sur les capacités. La conversion réelle est dans une fonction externe, map_meta_cap() .

Le filtre map_meta_cap vous permet d'étendre la fonctionnalité, par exemple lors de l'utilisation de publications personnalisées. Je pense qu'une assistance de base est fournie si vous définissez l'argument capabilities de register_post_type , mais l'article mentionné par Justin Tadlock et Le plugin Prospress en fournit des exemples complets. Mais vous pouvez le personnaliser pour que le système de fonctionnalités soit complètement basculé si vous le souhaitez.

    
réponse donnée Jan Fabry 05.10.2010 - 15:25
5

Ce filtre peut être utilisé pour mapper des méta-fonctionnalités pour des types de publication personnalisés. Il existe un bon exemple de code dans cet article:

enlace

    
réponse donnée sorich87 03.10.2010 - 10:01
2

Ceci est le filtre de la fonction map_meta_cap() . De la description, cette fonction semble écrire une capacité générale ( can_do_stuff ) passée à un nom plus spécifique (si l'auteur de l'article est alors can_do_this_stuff et can_do_that_stuff_also ), en vérifiant divers conditions si nécessaire.

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

Avez-vous déjà utilisé cette fonction ou souhaitez-vous l'utiliser pour quelque chose? Je suppose que, dans la mesure où cela ne semble pas être utilisé, il existe probablement de nouveaux moyens plus performants pour cette fonctionnalité.

    
réponse donnée Rarst 12.09.2010 - 10:11

Lire d'autres questions sur les étiquettes