Esta es una serie de tutoriales en cuatro partes que cubre el tema de los usuarios, roles y capacidades de WordPress. La serie cubrirá la arquitectura y el diseño de roles de usuario en WordPress; resalte las funciones más importantes para interactuar con los usuarios y administrar roles y capacidades; y en el último tutorial, vamos a construir un ejemplo de la vida real que demuestra la utilidad de esta API..
En esta primera parte, veremos los aspectos básicos y el funcionamiento interno del sistema de usuarios, roles y capacidades de WordPress. Ninguna función o código será cubierto en esta parte. Por lo tanto, puede pasar al siguiente si está interesado solo en escribir código que interactúe con este sistema. Sin embargo, le recomiendo encarecidamente que primero pase por esto para obtener una idea básica sobre los usuarios y los roles en WordPress.
Después de la versión 2.0, WordPress introdujo un nuevo sistema de Roles y Capacidades que reemplazó al antiguo sistema de nivel de usuario. El sistema más antiguo no será discutido; ahora está completamente en desuso (desde la versión 3.0) y ya no debe usarse.
El nuevo sistema es más avanzado y flexible. Ahora es posible crear permisos personalizados y asignarlos por usuario. Esta actualización vino para solucionar las deficiencias en el modelo anterior y para permitir a los desarrolladores crear complementos y temas más potentes y personalizados..
WordPress mantiene los datos de los usuarios en dos tablas: wp_users
y wp_usermeta
(Tomaré en cuenta durante toda esta serie que su configuración de WordPress usa el valor predeterminado wp_
prefijo). La segunda tabla se crea para ampliar la primera y permite a los desarrolladores adjuntar datos adicionales a cada usuario.
Si solo hubiera una tabla, no podrá adjuntar más datos a los usuarios o tendrá que mantener todos estos datos serializados en una fila de la columna, lo que no es muy bueno para el rendimiento y la escalabilidad. (Imagine el caso de tener 50 complementos donde cada uno agrega 2 o 3 campos más por usuario).
A continuación se muestra un diagrama del esquema de las dos tablas. Las tablas están vinculadas entre sí con una relación de "uno a muchos". De hecho, puede tener tantas filas como desee en el wp_usermeta
con el mismo user_id
(que es la clave externa para esta relación y representa la columna ID en wp_users
)
Si observamos el esquema de estas dos tablas, podemos concluir que wp_users
se utiliza para mantener una cantidad limitada y finita de datos sobre cada usuario. Algunos de ellos son obligatorios y se utilizan principalmente por el núcleo de WordPress, temas o complementos como el inicio de sesión, la contraseña, el correo electrónico y un bonito nombre (también el apodo). Pero no es el caso de la usuario_url
campo, por ejemplo. Este campo podría caber en el wp_usermeta
mesa ya que no es necesario.
Algunos campos obligatorios se almacenan en el wp_usermeta
como el apodo. Bueno, en realidad sólo soy consciente de esto. Sin embargo, cierta información crítica como las capacidades del usuario, el nivel de usuario y el modo SSL se almacenan en el wp_usermeta
mesa también Esto hace que no sea menos importante que el wp_users
Tabla (especialmente cuando los permisos y la seguridad son una gran preocupación).
Dicho esto, debe tener cuidado al tratar con ambas tablas. Recomiendo que te limites a las funciones de WordPress para interactuar con los usuarios y el sistema de capacidades..
Como cualquier otro CMS, WordPress cuenta con un sistema de permisos de usuario para establecer y restringir los privilegios para cada usuario. En esta sección, explicaré el concepto detrás de los roles y capacidades en WordPress. Entonces, si ha luchado con la explicación del Codex, espero que esta se aclare a medida que me acerco al concepto de manera diferente..
Olvídate de los roles. Supongamos por unos minutos que no existen..
Imaginemos el siguiente escenario: tienes un blog de WordPress que has configurado recientemente y eres el administrador. (Así que tienes todo el poder posible por ahí.) Decidiste agregar un nuevo usuario a tu blog para contribuir con algunas publicaciones de blog. También pensó que sería justo permitirle comentar y personalizar su nombre para mostrar.
A continuación se muestra una imagen de nuestro usuario con las capacidades que le asignó.
Así que es tan simple como eso. Usted asigna capacidades a los usuarios. Usted es libre de nombrar estas capacidades. Por ejemplo, puedes nombrar "write_new_post" como la barra para escribir una nueva publicación.
En su blog, tendrá una lista de capacidades, cada una de las cuales otorga un poder especial y limitado a los usuarios que las tienen. Cada usuario puede tener un número limitado de capacidades. Un usuario que tiene todas las capacidades es un administrador, ya que puede hacer casi todo. Piense en ello como un sistema de permisos, y las capacidades son permisos que le está dando a los usuarios.
Pero ¿por qué importan las capacidades? Bueno, tú eres el responsable de eso. Por ejemplo, en el caso de que esté creando su propio complemento (o tema), puede crear su propio "access_control_panel
"Capacidad y asignarlo a una serie de usuarios..
Cuando un usuario solicita su "Panel de control", debe verificar que el usuario tenga el "access_control_panel
"Capacidad antes de mostrar la página del Panel de control. También puede verificar la capacidad antes de ejecutar un fragmento de código en particular para asegurarse de que el usuario tenga los privilegios necesarios.
WordPress viene con un número predeterminado de capacidades que son necesarias para su funcionamiento. También puede hacer uso de estas capacidades, pero tenga cuidado de no eliminarlas. Ciertamente puedes hacer tus propias y personalizadas capacidades..
Así que ahora sabemos qué son las capacidades. Imaginemos otro escenario, donde tengas un montón de usuarios. Desea dividir a estos usuarios en dos grupos: Usuarios poderosos y usuarios menos poderosos. Cada grupo de usuarios tendrá capacidades especiales..
Para hacerlo, debe asignar estas capacidades a cada usuario, lo que puede ser un poco frustrante e improductivo. Los roles se hacen exactamente para eso, son lo que los usuarios están agrupados por.
Entonces, en lugar de asignar capacidades a los usuarios, los asigna a roles; y luego asignas los roles a los usuarios. Sin embargo, es posible asignar capacidades directamente a los usuarios. Se puede hacer un rol para uno o muchos usuarios; y un usuario puede tener ninguno, uno o muchos roles.
Así que la realidad es mucho más así..
Es importante tener en cuenta que debe verificar la capacidad de un usuario y no una función de usuario antes de ejecutar el código que requiere permiso. Nunca asuma que un rol tiene una capacidad específica porque este puede ser cambiado por otro complemento o tema.
Hay acciones que requieren múltiples capacidades. Por ejemplo, para editar una entrada de blog, necesita el 'editar post
'capacidad. Pero, ¿y si esta entrada de blog fue creada por otro usuario? Entonces necesitarás eledit_other_posts
'capacidad también. Por lo tanto, debe verificar ambos antes de permitir que el usuario edite la publicación..
Ahí es donde las capacidades meta entran en juego. WordPress tiene un map_meta_cap ()
función que devuelve una matriz de las capacidades necesarias para ejecutar una capacidad particular.
Así que volvamos al ejemplo anterior. Supongamos que tenemos un usuario con una ID de 3, y queremos comprobar si este usuario puede editar una publicación de blog con una ID de 5. Esta publicación de blog es publicada por otro usuario con una ID de 6.
En este caso, el map_meta_cap ()
La función devolverá una matriz con las siguientes capacidades: editar post
, edit_published_posts
, y edit_other_posts
. Para crear esa matriz, la map_meta_cap ()
La función necesita hacer algunas verificaciones basadas en el usuario y la publicación..
Las capacidades predeterminadas que la función verifica son 'borrar usuario
','editar usuario
','remover_usuario
','promotor_usuario
','Eliminar mensaje
','eliminar página
','editar post
','editar página
','leer_post
', o'página de lectura
'. Es posible, sin embargo, aumentar con los suyos al enganche al 'map_meta_cap
'filtro.
Así que eso fue, en pocas palabras, los usuarios de WordPress y el sistema de permisos. He tratado de mantenerlo lo más simple y minimalista posible; Y evité incluir cualquier código por ese motivo. En la siguiente parte, veremos una amplia gama de funciones que WordPress proporciona para interactuar con este sistema..