Perché i miei ruoli non sono visibili in una rete / sito multiplo?


16

La mia rete sta mostrando ruoli in alcuni siti e non in altri.

Per qualche motivo che non posso spiegare, quando aggiungo un nuovo utente, non ho ruoli tra cui scegliere nella casella a discesa di un sito secondario nella mia rete. Inoltre, il mio nuovo utente assegnato a un sito non viene visualizzato nel mio elenco di utenti per quel sito.

È qualcosa di risolvibile?

Di seguito un'immagine della situazione attuale.

I ruoli non vengono visualizzati

Di seguito l'immagine che mostra il sito principale con i ruoli correttamente presenti, ma i siti secondari della rete no.

Mostra dei ruoli

Risposte:


29
  1. Determina il tuo ID blog multisito. Userò 99 come esempio
  2. Vai nel database
  3. Vai a questa tabella: wp_##_options(wp_99_options) - avrai una tabella per ogni blog
  4. Trova il record dove option_name=wp_user_roles
  5. Modifica il testo wp_user_rolesin wp_##_user_roles("wp_99_user_roles")

La tabella che si sta modificando avrà option_id, blog_id, option_name, option_value, autoload. Tuttavia, NON CAMBIARE QUALSIASI RECORD tranne il record dove option_name= wp_user_roles. In questa tabella ci sarà un solo record come questo.

wp_user_roles viene utilizzato quando non è presente alcuna installazione Multisito e qui, sembra che fosse solo un bug al momento della creazione della tabella.


Grazie! Consigli salvavita qui. Questa è ESATTAMENTE la risposta giusta.
ZaMoose,

1
Non avevo "wp_user_roles" nella mia tabella, quello che ho fatto è stato copiare il contenuto di wp_4_options> wp_user_roles (un grande oggetto json o un array serializzato, non lo so) in un nuovo record chiamato wp_5_options (questo era il ruolo mancante del blog) e risolto il mio problema. Votato +1 comunque perché mi ha messo sulla strada giusta
Xananax il

Ho risolto anche la RIMOZIONE del record "wp _ ## _ user_roles" dalla tabella principale wp_options, perché sembra sovrascrivere quello dalle opzioni wp _ ## _.
Paolo,

1
Risposta brillante!
jnthnclrk,

7
Per le persone che hanno migrato il tuo sito e modificato i prefissi, l'errore potrebbe essere un "wp _ ## _ user_roles" anziché "{new_prefix} _ ## _ user_roles"
Xhynk

2

Se questo è il problema che conosco così bene, stai eseguendo un'installazione memcache dietro l'installazione della tua MU? Ho scoperto che apparentemente c'è un problema di cache (testimoniato in 2.9) per l'oggetto options in cui qualcosa di buono (come la chiave wp_user_roles) si blocca nell'array memcache "notoptions".

Se esegui in cima a memcache, e questa sembra una possibilità, prova a connetterti alla macchina tramite 11211. Digita delete blogid:options:notoptions, dove blogid è l'id del blog in cui vedi il problema. Aggiorna il pannello di amministrazione e verifica se ci sono ruoli nel menu a discesa. In tal caso, hai riscontrato il tuo problema.

AGGIORNAMENTO : OK, quindi non hai trovato il tuo problema - non stavi eseguendo memcache. Vorrei ancora controllare l'oggetto ruoli, cercando uno corrotto o inesistente. Credo che sia il tuo miglior esempio. È possibile utilizzare questo codice per scaricare la tabella delle opzioni:

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. Non so come memcache sia entrato nel mio server. Non lo sto usando affatto. Forse perché ho installato la cache w3. Ho provato l'eliminazione mi ha dato un messaggio dicendo not_found. Sono andato avanti e ho disabilitato il memcache, poiché non lo sto usando. Sto ancora riscontrando il problema.
Geo

Mi dispiace che non sia stata una soluzione al tuo problema. Mi sono imbattuto molto in questo, quindi è stata la mia ipotesi migliore. Continuerei a cercare l'oggetto ruoli per quel blog. Esiste? Aggiornato la mia risposta sopra nella speranza che possa aiutare.
editore l'

1

Ho avuto questo problema con un'installazione su più siti dopo aver reinstallato WordPress e ripristinato da un backup di Updraft Plus.

Quando ho controllato il user_rolesrecord, option_name era ancora impostato sul prefisso originale di quattro caratteri, come pre1_user_roles, mentre il prefisso per la seconda installazione era qualcosa di simile pre2_user_roles.

Ho aggiornato questo pre2_user_rolese le opzioni sono ricomparse immediatamente nella pagina delle opzioni dell'utente.


1

GRAZIE. Questo problema rappresenta ben 10 ore di debug. Questo è stato un vero orso per me.

Per espanderlo un po ', ho aggiunto una funzione al mio sito che ti consentirà di risolvere questo problema se stai creando siti a livello di codice.

Fondamentalmente, questo verificherà se è wp_user_rolesstato impostato nel blog specificato. In tal caso, la funzione utilizzerà wp_user_rolesper impostare una nuova opzione nel modo corretto.

  /**
   * 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();
  }

0

Volevo solo ringraziarti per questo articolo perché ho cercato una soluzione a questo problema da molto tempo.

Era semplicemente perché avevo usato un plugin per clonare i miei siti e non l'avevo mai aggiornato wp_##_user_rolescorrettamente. Quando il sito copiato da wp_13...esso è stato clonato in un nuovo sito wp_81...ma questa voce era ancora bloccata wp_13.


0

Voglio solo sottolineare che alcune persone potrebbero avere ancora una tabella degli utenti del sito vuota, in particolare per il loro sito principale. Se si verifica questo problema, il modo per risolverlo è nel modo seguente:

  1. Vai alla tabella wp_usermeta
  2. Trova le voci con la meta_key wp_capabilities
  3. Cambia la meta_key da wp_capabilities a wp_1_capabilities

Credo che "1" sia sempre l'ID del sito principale.

Saluti.


Il wp_prefisso è impostato su Sinde wp-config.phpe viene impostato automaticamente su wp_. In 1effetti è il sito principale. Ma non deve essere 1poiché si tratta di un ID univoco e incrementale che viene generato automaticamente.
Kaiser
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.