¿Por qué mis roles no están visibles en un sitio múltiple / red?

16

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

Por alguna razón que no puedo explicar, cuando agrego un nuevo usuario, no tengo roles para elegir en el cuadro desplegable de un subsitio en mi red. Además, mi nuevo usuario asignado a un sitio no aparece en mi lista de usuarios para ese sitio.

¿Es esto algo reparable?

Debajo de una imagen de la situación actual.

Roles que no se muestran

A continuación se muestra la imagen que muestra el sitio principal con los roles correctamente allí, pero los subsitios de la red no.

Roles que muestran

Geo
fuente

Respuestas:

29
  1. Determine su ID de blog multisitio. Usaré 99 como ejemplo
  2. Ir a la base de datos
  3. Vaya a esta tabla: wp_##_options(wp_99_options): tendrá una tabla para cada blog
  4. Encuentra el registro donde option_name=wp_user_roles
  5. Cambie el texto wp_user_rolesa wp_##_user_roles("wp_99_user_roles")

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

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

Diseño del sitio web de Nashville
fuente
¡Gracias! Consejos para salvar vidas aquí. Esta es EXACTAMENTE la respuesta correcta.
ZaMoose
1
No tenía "wp_user_roles" en mi tabla, lo que hice fue copiar el contenido de wp_4_options> wp_user_roles (un objeto json grande o una matriz serializada, lo sé) en un nuevo registro llamado wp_5_options (este fue el blog que falta roles) y arreglaron mi problema Sin embargo, voté +1 porque me puso en el camino correcto
Xananax
Resolví también QUITAR el registro "wp _ ## _ user_roles" de la tabla principal wp_options, porque parece anular el de las opciones wp _ ## _.
Paolo
1
Brillante respuesta!
jnthnclrk
77
Para las personas que migraron su sitio y cambiaron los prefijos, el error podría ser un "wp _ ## _ user_roles" en lugar de "{new_prefix} _ ## _ user_roles"
Xhynk
2

Si este es el problema que conozco tan bien, ¿está ejecutando una configuración de memcache detrás de su instalación de MU? Descubrí que aparentemente hay un problema de caché (presenciado en 2.9) para el objeto de opciones donde algo bueno (como la clave wp_user_roles) se atasca en la matriz de memcache "notoptions".

Si ejecuta sobre Memcache, y esto suena como una posibilidad, intente hacer telnet en la máquina a través del 11211. Escriba delete blogid:options:notoptions , donde el blogid es la identificación del blog en el que ve el problema. Actualice el panel de administración y vea si hay roles en el menú desplegable. Si es así, has encontrado tu problema.

ACTUALIZACIÓN : OK, por lo que no encontró su problema, no estaba ejecutando memcache. Todavía verificaría el objeto de roles, buscando uno corrupto o inexistente. Creo que es tu mejor pista. Puede 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/>";
}
editor
fuente
Editor. No sé cómo llegó Memcache a mi servidor. No lo estoy usando en absoluto. Quizás porque instalé el caché w3. Intenté eliminarlo, me dio un mensaje que decía no encontrado. Seguí adelante y desactivé la memoria caché, ya que no la estoy usando. Todavía tengo el problema.
Geo
Lamento que no haya sido una solución a su problema. Me encontré con este mucho, así que fue mi mejor suposición. Seguiría buscando en el objeto de roles para ese blog. ¿Existe? Actualicé mi respuesta anterior con la esperanza de que ayude.
editor
1

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

Cuando revisé el user_rolesregistro, el nombre_opción 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 así pre2_user_roles.

Actualicé esto pre2_user_rolesy las opciones reaparecieron inmediatamente en la página de opciones del usuario.

Richard Hare
fuente
1

GRACIAS. Este problema representa unas 10 horas sólidas de depuración. Este fue un verdadero oso para mí.

Para ampliar esto un poco, agregué una función a mi sitio que le permitirá resolver este problema si está creando sitios mediante programación.

Básicamente, esto verificará si wp_user_rolesse configuró en el blog especificado. Si es así, la función se usará wp_user_rolespara establecer una nueva opción de la manera correcta.

  /**
   * Sometimes, user roles do not properly get set when a new site is set up
   * To fix this issue, we check to make sure the data is added properly and update if not
   * See /wordpress/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();
  }
Alex Standiford
fuente
0

Solo quería agradecerle por este artículo porque he estado buscando una solución a este problema durante mucho tiempo.

Fue simplemente porque había usado un complemento para clonar mis sitios y nunca se actualizó wp_##_user_rolescorrectamente. Cuando el sitio copiado wp_13...se clonó en un sitio nuevo, wp_81...pero esta entrada todavía estaba atascada wp_13.

Joseph Dowdy
fuente
0

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

  1. Ir a la tabla wp_usermeta
  2. Encuentra cualquier entrada con la meta_key wp_capabilities
  3. Cambie la meta_key de wp_capabilities a wp_1_capabilities

Creo que "1" es siempre la identificación del sitio raíz.

Salud.

jamilj
fuente
El wp_prefijo se establece sinde wp-config.phpy solo tiene el valor predeterminado wp_. El 1hecho es el sitio raíz. Pero no tiene que ser así, 1ya que esta es una identificación única e incremental que se genera automáticamente.
kaiser