¿Dónde se definen los Roles disponibles en la base de datos wp_?

12 ene 2013, 04:01:56
Vistas: 63.6K
Votos: 27

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.

0
Todas las respuestas a la pregunta 2
3
47

Los roles de usuario se almacenan en la tabla wp_options.

Busca el nombre de opción wp_user_roles en la tabla wp_options.

12 ene 2013 05:09:51
Comentarios

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.

Eric K Eric K
8 ene 2021 01:02:24

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

Matt Raines Matt Raines
1 jul 2021 16:55:15

Sí, si estás en una instalación multisite y tienes un ID de blog, tanto la tabla como el option_name incluirían el ID del blog. Así que usa por ejemplo esta consulta: select * from wp_37_options where option_name = 'wp_37_user_roles';

Tyler Collier Tyler Collier
2 nov 2021 22:43:03
5
27

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;}
20 jul 2017 09:57:22
Comentarios

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.

Brett Donald Brett Donald
1 oct 2019 06:06:49

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 Johnny Rockex
31 may 2021 16:37:16

@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 mayersdesign
27 jul 2021 19:42:43

@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.

Johnny Rockex Johnny Rockex
28 jul 2021 14:22:33

No responde la pregunta del OP, pero era lo que estaba buscando. ¡Gracias!

Davey Davey
28 ago 2024 13:26:16