Estoy bastante seguro de que entiendo los roles y capacidades configurados en WordPress: capacidades granulares, agrupadas en roles que pueden asignarse a los usuarios. El código debe verificar las capacidades granulares, no los roles (porque las capacidades para roles particulares pueden cambiar). Los roles no son necesariamente jerárquicos (aunque los roles predeterminados sí lo son).
¿Hay alguna forma de asignar múltiples roles a los usuarios? Alternativamente, ¿tener varios grupos de capacidades y asociar uno o más grupos a un usuario? En la forma en que funciona mi sitio, hay una serie de responsabilidades obvias: actualizar páginas web, moderar foros, actualizar el calendario de eventos, etc. Cada responsabilidad tiene un grupo de capacidades que son necesarias para realizar las tareas asociadas a ella. Me gustaría permitir que un usuario realice una o más responsabilidades. Por lo tanto, el usuario A podría actualizar las páginas web y el calendario de eventos pero no moderar los foros (no lo suficientemente táctico), pero el usuario B podría moderar los foros, actualizar el calendario de eventos, pero no está permitido cerca de las páginas web.
A falta de definir un rol para cada combinación posible de responsabilidades, ¿hay alguna forma de hacerlo?
fuente
Respuestas:
La falta de roles múltiples me ha irritado durante mucho tiempo ya que la clase subyacente WP_User admite múltiples roles. Incluso he considerado buscar una solución de software alternativa. @lpryor: después de leer tu publicación, me volví a motivar para implementarla yo mismo.
Tomó un número sorprendentemente corto de líneas, aunque tuve que hackear el archivo users.php ya que era demasiado vago para crear un complemento por separado para hacerlo por mí. Claramente, esta es la manera incorrecta de hacerlo, así que si estoy lo suficientemente motivado en el futuro, podría intentar hacerlo correctamente.
Si no le importa poder actualizar a la última versión de Wordpress (que debería), puede implementar múltiples roles con los fragmentos de código a continuación. Tenga en cuenta que no soy un experto en wordpress. Acabo de abrir los archivos relevantes e hice los cambios sin tratar de entender todas las implicaciones de lo que estaba haciendo. El código me parece razonable pero no confiaría en mi vida.
(Estoy usando 3.2, por lo que sus números de línea pueden variar) En class-wp-users-list-table.php justo antes de la línea 150 agregue algunos como los siguientes:
luego cambie la función current_account para parecerse a esto
}
Ahora en users.php Comente las líneas 71-76
Reemplace set_role en la línea 83 con add_role
En la línea 92, agregue lo siguiente (Esto es solo una copia y pegado ligeramente editado de la acción de promoción: no lo he verificado para asegurarme de que la capacidad de promover_usuario sea adecuada para eliminar roles)
En la línea 370, agregue lo siguiente
fuente
El complemento Editor de roles de usuario maneja múltiples roles para un usuario.
Una vez instalado, Usuarios> debajo de cada usuario es la opción Capacidades. URE trata el primer rol de WP como "rol principal" y le permite agregar "otros roles".
fuente
Uso el complemento Miembros junto con capacidades creadas a medida.
No puede asignar varios roles a una persona, pero puede crear cualquier rol y especificar qué capacidades tiene ese rol.
En las plantillas, puede usar algo como current_user_can () .
fuente