¿Dónde se definen los Roles disponibles en la base de datos wp_?
Me inscribí en la lista para probar una versión beta privada de un plugin que estoy usando en una red multisitio.
Los autores del plugin tienen código para agregar un rol personalizado. Tienen un error que elimina la capacidad de asignar a un usuario cualquier rol excepto su único rol personalizado.
Cuando visito ../wp-admin/network/site-users.php
, los menús desplegables de "Agregar Usuario" solo muestran el único rol que este plugin agregó. El menú desplegable de cambio de rol muestra todos los roles predeterminados de WP, más algunos roles adicionales que este y otros plugins han añadido. Si intento cambiar un usuario a uno de estos roles, obtengo una página de error que dice "No puedes asignar ese rol a los usuarios".
He estado discutiendo esto con el desarrollador, y parecen estar desconcertados.
He estado buscando en mi base de datos y en el codex, y no puedo encontrar dónde están definidos los roles válidos.

Ten en cuenta que el option_name
puede contener el prefijo de tu base de datos en lugar de wp_
. Este fue el caso para mi base de datos.

También podría tener un ID de blog si estás en una instalación multisite, por ejemplo "wp_37_user_roles".

Los roles de usuario se almacenan en la tabla wp_user_meta
Para verificar los roles de usuario, primero, busca el ID del usuario en la tabla wp_users
(Nombre de la columna ID)
Ahora ve a la tabla wp_usermeta
y busca donde la columna user_id
sea igual al ID que coincide con el ID
de la tabla wp_users
.
Obtendrás una lista de filas con metadatos del usuario seleccionado, la fila con meta_key
como wp_capabilities
define el rol del usuario.
El valor de wp_capabilities
para
- Administrador :
a:1:{s:13:"administrator";b:1;}
- Cliente de WooCommerce :
a:1:{s:8:"customer";b:1;}

Tu respuesta se relaciona con la asignación de un rol a un usuario. El OP estaba preguntando sobre las definiciones de los roles en sí, las cuales están almacenadas en wp_options.

que a:1:{s:13:"administrator";b:1;} es una especie de cadena desordenada, ¿qué son todos esos números alrededor del contenido principal?

@Johnny Rockex Eso son datos serializados, una forma de almacenar más de un valor en una celda de base de datos... a menudo mal visto hasta cierto punto, ya que puede dificultar las cosas. La "s" significa "string" (cadena de 13 caracteres), la "b" es para Booleano - Busca en Google Serialización de Datos en MySQL para más detalles.

@mayersdesign Puedo entender los ceños fruncidos, mi instinto se inclinaría por reestructurar las tablas para tener valores únicos en cada campo, pero quién sabe, funciona.
