¿Cuál es el uso del filtro map_meta_cap?

20

¿Para qué sirve el map_meta_capfiltro? Este filtro no está documentado en ningún lado. Tengo una idea poco clara de lo que podría ser:

Se usa para asignar los permisos del usuario a las operaciones en las publicaciones.

¿A qué se destina exactamente? Si es posible, proporcione un ejemplo de código de muestra de su uso correcto.

rsman
fuente

Respuestas:

25

Este filtro le permite extender la map_meta_cap()función . Se llama aWP_User->has_cap() esta función para convertir una metacapacidad en una o más capacidades primitivas .

Por ejemplo, desea saber si el usuario actual debería poder editar la publicación actual, la edit_postmetacapacidad . Esto depende de algunos factores: ¿es el usuario el autor de la publicación? ¿La publicación ya está publicada? ¿La publicación está marcada como privada? Las capacidades primitivas son edit_posts, edit_published_posts, edit_others_postsy edit_private_posts: se puede asignar a estos roles de usuario . map_meta_cap()comprueba el autor y el estado de la publicación y devuelve el conjunto correcto de capacidades primitivas que este usuario debe tener para permitir la edición de la publicación (si la publicación está escrita por otra persona y publicada, volvería array('edit_others_posts', 'edit_published_posts'), por lo que el usuario debe tener ambas capacidades para Seguir).

Agregar esta idea de capacidades meta y capacidades primitivas le permite mantener la WP_Userclase base libre de conocimiento de publicaciones y estados de publicaciones y lo que sea, y solo enfocarse en las capacidades. La conversión real se encuentra en una función externa, map_meta_cap().

El filtro lemap_meta_cap permite ampliar la funcionalidad, por ejemplo, cuando utiliza publicaciones personalizadas. Creo que se proporciona soporte básico si establece el capabilitiesargumento de register_post_type, pero el artículo mencionado por Justin Tadlock y el complemento Prospress proporcionan ejemplos completos de esto. Pero puede personalizarlo para cambiar completamente el sistema de capacidades, si lo desea.

Jan Fabry
fuente
2

Este es un filtro de función map_meta_cap(). De la descripción, esta función parece escribir la capacidad general ( can_do_stuff ) pasada a más específica (si el autor de la publicación entonces can_do_this_stuff y can_do_that_stuff_also ), verificando varias condiciones si es necesario.

Desafortunadamente, no está documentado en Codex y no puedo encontrar una sola llamada directa de esta función en la fuente WP 3.0.1.

¿Ha encontrado el uso de esta función o quiere usarla para algo? Supongo que dado que no parece ser utilizado, probablemente haya nuevas y mejores formas para esta funcionalidad.

Rarst
fuente
El autor de este complemento parece estar usándolo: github.com/Prospress/Prospress/blob/master/pp-posts/…
rsman