¿Por qué no se ven mis roles en una red Multi-site/Network?

11 mar 2011, 02:05:38
Vistas: 17.5K
Votos: 17

Mi red muestra roles en algunos sitios pero no en otros.

Por alguna razón que no logro explicar, cuando añado un nuevo usuario, no tengo roles para elegir en el menú desplegable de un sub-sitio de mi red. Además, mi nuevo usuario asignado a un sitio no aparece en la lista de usuarios de ese sitio.

¿Esto tiene solución?

A continuación una imagen de la situación actual.

Roles no visibles

Aquí está la imagen que muestra el sitio principal con los roles correctamente visibles, pero los sub-sitios de la red no los muestran.

Roles visibles

0
Todas las respuestas a la pregunta 7
7
34
  1. Determina el ID de tu blog Multisite. Usaré el 99 como ejemplo
  2. Accede a la base de datos
  3. Ve a esta tabla: wp_##_options (wp_99_options) — tendrás una tabla para cada blog
  4. Encuentra el registro donde option_name = wp_user_roles
  5. Cambia el texto wp_user_roles por wp_##_user_roles ("wp_99_user_roles")

La tabla que estás editando tendrá option_id, blog_id, option_name, option_value, autoload. Sin embargo, NO CAMBIES NINGÚN REGISTRO excepto el registro donde option_name = wp_user_roles. Solo habrá un único registro como este en la tabla.

wp_user_roles se usa cuando no hay una instalación Multisite, y aquí parece que fue simplemente un error cuando se creó la tabla.

19 jul 2011 23:27:18
Comentarios

¡Gracias! Un consejo que salva vidas aquí. Esta es EXACTAMENTE la respuesta correcta.

ZaMoose ZaMoose
17 sept 2011 19:48:27

NO tenía "wp_user_roles" en mi tabla, lo que hice fue copiar el contenido de wp_4_options>wp_user_roles (un gran objeto json o un array serializado, no lo sé) a un nuevo registro llamado wp_5_options (este era el blog al que le faltaban los roles) y solucionó mi problema. Voté +1 de todos modos porque me puso en el camino correcto.

Xananax Xananax
15 dic 2011 17:09:05

También resolví ELIMINANDO el registro "wp_##user_roles" de la tabla principal wp_options, porque parece sobrescribir el de wp##_options.

Paolo Paolo
19 feb 2013 11:36:33

¡Respuesta brillante!

jnthnclrk jnthnclrk
26 ago 2013 18:36:40

Para las personas que han migrado su sitio y cambiado los prefijos, el error podría ser un "wp_##user_roles" en lugar de "{new_prefix}##_user_roles"

Xhynk Xhynk
17 nov 2014 23:59:37

Además, una vez que realices esta actualización... si no parece funcionar, asegúrate de borrar cualquier caché que estés usando, ya que la opción podría estar en caché.

Privateer Privateer
6 oct 2017 17:36:18

Gracias, excelente respuesta y me salvó en una migración/fusión recientemente. ¡También el comentario de Xhynk sobre los prefijos cambiados es vital si el prefijo cambia en una migración/fusión!

Andrew T Andrew T
17 may 2018 18:38:49
Mostrar los 2 comentarios restantes
0

Tuve este problema con una instalación Multisite después de reinstalar WordPress y restaurar desde una copia de seguridad de Updraft Plus.

Cuando revisé el registro user_roles, el option_name todavía estaba configurado con el prefijo original de cuatro caracteres, como pre1_user_roles, mientras que el prefijo para la segunda instalación era algo como pre2_user_roles.

Actualicé esto a pre2_user_roles y las opciones reaparecieron inmediatamente en la página de opciones de usuario.

23 may 2017 23:54:36
2

Si este es el problema que conozco tan bien, ¿estás ejecutando una configuración de memcache detrás de tu instalación MU? He descubierto que aparentemente hay un problema de caché (observado en la versión 2.9) con el objeto de opciones donde algo importante (como la clave wp_user_roles) queda atascado en el array "notoptions" de memcache.

Si estás usando memcache y esto suena como una posibilidad, intenta conectarte por telnet a la máquina a través del puerto 11211. Escribe delete blogid:options:notoptions, donde blogid es el ID del blog donde estás viendo el problema. Actualiza el panel de administración y verifica si aparecen los roles en el menú desplegable. Si es así, has encontrado tu problema.

ACTUALIZACIÓN: Vale, parece que no encontraste el problema — no estabas usando memcache. Aún así, recomendaría revisar el objeto de roles, buscando uno corrupto o inexistente. Creo que es tu mejor pista. Puedes usar este código para volcar la tabla de opciones:

global $wpdb;
$array = $wpdb->get_col("SELECT option_name FROM $wpdb->options");
foreach ($array as $key) {
    echo $key . ": <code>";
    var_dump(get_option($key), true));
            echo "</code><br/>";
}
11 mar 2011 03:39:53
Comentarios

Editor. No sé cómo llegó memcache a mi servidor. No lo estoy usando en absoluto. Tal vez porque instalé w3 cache. Intenté eliminarlo y me dio un mensaje que decía not_found. Seguí adelante y deshabilité el memcache, ya que no lo estoy usando. Todavía tengo el problema.

Geo Geo
11 mar 2011 04:50:12

Lamento que no haya sido una solución a tu problema. Me encuentro con este caso frecuentemente, así que fue mi mejor suposición. Seguiría investigando el objeto de roles para ese blog. ¿Existe? Actualicé mi respuesta anterior con la esperanza de que ayude.

editor editor
11 mar 2011 20:24:06
0

GRACIAS. Este problema representó unas sólidas 10 horas de depuración. Realmente fue un hueso duro de roer para mí.

Para ampliar un poco, agregué una función a mi sitio que te permitirá resolver este problema si estás creando sitios de manera programática.

Básicamente, esto verificará si wp_user_roles fue configurado en el blog especificado. Si es así, la función usará wp_user_roles para establecer una nueva opción de la manera correcta.

  /**
   * A veces, los roles de usuario no se configuran correctamente cuando se crea un nuevo sitio
   * Para solucionar este problema, verificamos que los datos se agreguen correctamente y actualizamos si no es así
   * Ver https://wordpress.stackexchange.com/questions/11725/why-are-my-roles-not-visible-in-a-multi-site-network
   */
function maybeAddUserRoles($blog_id){
    switch_to_blog($blog_id);
    if(get_option('wp_user_roles')){
      update_option('wp_'.$blog_id.'_user_roles', get_option('wp_user_roles'));
      delete_option('wp_user_roles');
    }
    restore_current_blog();
  }
9 abr 2018 18:47:41
0

Solo quería agradecerte por este artículo porque llevaba mucho tiempo buscando una solución a este problema.

Resulta que era simplemente porque había usado un plugin para clonar mis sitios y nunca actualizó correctamente wp_##_user_roles. Cuando el sitio se copió desde wp_13... fue clonado a un nuevo sitio wp_81... pero esta entrada seguía estancada en wp_13.

4 dic 2014 06:28:44
1

Solo quiero señalar que algunas personas pueden aún tener una tabla de usuarios del sitio vacía—específicamente para su sitio principal. Si este problema ocurre, la forma de solucionarlo es haciendo lo siguiente:

  1. Ir a la tabla wp_usermeta
  2. Buscar cualquier entrada con el meta_key wp_capabilities
  3. Cambiar el meta_key de wp_capabilities a wp_1_capabilities

Creo que "1" siempre es el ID del sitio principal.

Saludos.

21 jul 2016 21:41:27
Comentarios

El prefijo wp_ se establece en wp-config.php y por defecto es wp_. El 1 efectivamente es el sitio raíz. Pero no tiene que ser necesariamente 1, ya que es un ID único y autoincremental que se genera automáticamente.

kaiser kaiser
21 jul 2016 22:05:34
0

Instala este plugin: https://wordpress.org/plugins/capability-manager-enhanced/

Ve a tu sitio > Capacidades > Ajustes > Respaldo > Restablecer Roles, haz clic en "Restablecer a valores predeterminados de WordPress" y esto solucionará tu sitio.

Nada más funcionó para mí.

4 nov 2021 16:30:24