¿Cuál es la diferencia entre las funciones Role y Meta? Cuándo usar el filtro map_meta_cap ()

8

Me estoy confundiendo mucho sobre las siguientes cosas:

  1. diferencia entre las funciones Role y Meta,
  2. diferencia entre capacidades meta y primitivas,
  3. cuando usar map_meta_cap()filtro

Hubo muchas situaciones en las que agregué capacidades WP existentes o personalizadas a roles existentes o personalizados de WP, esperando que funcione de forma inmediata y la mayoría de las veces no lo hace.

Veo que la gente menciona sobre el map_meta_cap()filtro, pero no puedo encontrar una buena explicación de lo que realmente hace y cuándo debo usarlo y cuándo las capacidades funcionarán de inmediato.

Espero que tenga sentido.

Agradecería enormemente las explicaciones o enlaces a recursos que explican esto bien.

Gracias Dasha

dashaluna
fuente
posible duplicado de ¿Cuál es el uso del filtro map_meta_cap?
John Blackbourn
Esta publicación de Justin Tadlock fue en última instancia la fuente de información de la que más me beneficié.
Justin Bell
¿Fue útil mi respuesta? Acepte y vote si fue útil
Pmpr

Respuestas:

3

diferencia entre las funciones de rol y meta

Eso sería mejor pedir al comparar Rolecon Capabilities, no sólo Meta capabilities, sino como una respuesta sencilla:

A Roledefine un conjunto de tareas que un usuario asignado al rol puede realizar.

Capabilities están asignados a Roles

diferencia entre capacidades meta y primitivas?

Meta capacidades

edit_post, read_posty delete_postse dice que son Meta Capabilitiesporque dependen del contexto, por ejemplo, la publicación que se está editando / leyendo / borrando. Eso no tiene sentido si dices que algún usuario tiene edit_postcapacidad, porque alguien te preguntará: ¿ puede editar qué publicación?

Capacidades primitivas

Estas son capacidades como las edit_postsque no dependen de ningún contexto y son intrínsecas para el usuario. Si alguien tiene edit_postscapacidad, puede editar publicaciones.

cuándo usar el filtro map_meta_cap ()?

Cuando registra un nuevo tipo de publicación usando register_post_type , tiene una opción para usar capability_typeque dice, ¿cuáles son las capacidades similares a? Allí solo puede decir post, lo que significa que sus capacidades son similares a las del posttipo de publicación.

Pero si necesita más personalización, puede decir booko array( 'book', 'books' )(lo mismo), por ejemplo, tener las siguientes capacidades:

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', 
)

Cuando se usa capability_typecomo una matriz, por ejemplo, matriz ('historia', 'historias'), el primer elemento se usará para las capacidades singulares y el segundo elemento de la matriz para las capacidades plurales.

Se map_meta_cap()llama WP_User->has_cap()a la función para convertir una metacapacidad en una o más capacidades primitivas.

También hay un map_meta_capparámetro en register_post_type, que hace lo mismo, en el registro post_type.

Pmpr
fuente
...If somebody has edit_posts capabality, she/he can edit posts...pero cual / cuyas publicaciones?
T.Todua