De ce nu-mi sunt vizibile rolurile într-o rețea Multi-site?

11 mar. 2011, 02:05:38
Vizualizări: 17.5K
Voturi: 17

Rețeaua mea afișează roluri în unele site-uri, dar nu și în altele.

Din motive pe care nu le pot explica, când adaug un utilizator nou, nu am roluri de selectat în meniul drop-down al unui sub-site din rețeaua mea. De asemenea, noul utilizator atribuit unui site nu apare în lista de utilizatori pentru acel site.

Este o problemă care poate fi rezolvată?

Mai jos este o imagine cu situația actuală.

Roluri care nu apar

Mai jos este imaginea care arată site-ul principal cu rolurile afișate corect, dar sub-site-urile rețelei nu le afișează.

Roluri afișate

0
Toate răspunsurile la întrebare 7
7
34
  1. Determină ID-ul blogului tău Multisite. Voi folosi 99 ca exemplu
  2. Accesează baza de date
  3. Navighează la tabela: wp_##_options (wp_99_options) - vei avea o tabelă pentru fiecare blog
  4. Găsește înregistrarea unde option_name = wp_user_roles
  5. Schimbă textul wp_user_roles în wp_##_user_roles ("wp_99_user_roles")

Tabela pe care o editezi va avea option_id, blog_id, option_name, option_value, autoload. Cu toate acestea, NU MODIFICA NICIO ALTĂ ÎNREGISTRARE decât cea unde option_name = wp_user_roles. Va exista o singură înregistrare de acest gen în această tabelă.

wp_user_roles este folosit când nu există o instalare Multisite, iar aici, se pare că a fost doar o eroare la crearea tabelei.

19 iul. 2011 23:27:18
Comentarii

Mulțumesc! Sfaturi care salvează vieți aici. Acesta este EXACT răspunsul corect.

ZaMoose ZaMoose
17 sept. 2011 19:48:27

Nu aveam "wp_user_roles" în tabelul meu, ce am făcut a fost să copiez conținutul din wp_4_options>wp_user_roles (un obiect json mare sau un array serializat, nu știu exact) într-o nouă înregistrare numită wp_5_options (acesta era blogul care îmi lipsea rolurile) și am rezolvat problema. Am votat +1 oricum pentru că m-a pus pe drumul cel bun.

Xananax Xananax
15 dec. 2011 17:09:05

Am rezolvat și prin ELIMINAREA înregistrării "wp_##_user_roles" din tabelul principal wp_options, deoarece se pare că suprascrie cea din wp_##_options.

Paolo Paolo
19 feb. 2013 11:36:33

Răspuns excelent!

jnthnclrk jnthnclrk
26 aug. 2013 18:36:40

Pentru persoanele care au migrat site-ul și au schimbat prefixele, eroarea ar putea fi "wp_##user_roles" în loc de "{new_prefix}##_user_roles"

Xhynk Xhynk
17 nov. 2014 23:59:37

De asemenea, odată ce faci această actualizare... dacă nu pare să funcționeze, asigură-te că ștergi orice cache pe care îl rulezi, deoarece opțiunea ar putea fi cache-uită.

Privateer Privateer
6 oct. 2017 17:36:18

Mulțumesc, răspuns excelent și m-a salvat recent la o migrare/unire. De asemenea, comentariul lui Xhynk despre prefixele modificate este vital dacă prefixul se schimbă la o migrare/unire!

Andrew T Andrew T
17 mai 2018 18:38:49
Arată celelalte 2 comentarii
0

Am întâmpinat această problemă la o instalație Multisite după reinstalarea WordPress și restaurarea dintr-o copie de rezervă Updraft Plus.

Când am verificat înregistrarea user_roles, option_name era încă setat la prefixul original de patru caractere, cum ar fi pre1_user_roles, în timp ce prefixul pentru a doua instalație era ceva de genul pre2_user_roles.

Am actualizat această valoare la pre2_user_roles și opțiunile au reapărut imediat în pagina de opțiuni pentru utilizatori.

23 mai 2017 23:54:36
2

Dacă aceasta este problema pe care o cunosc atât de bine, rulezi o configurare memcache în spatele instalării tale MU? Am descoperit că aparent există o problemă de cache (observată în versiunea 2.9) pentru obiectul de opțiuni, unde ceva util (cum ar fi cheia wp_user_roles) rămâne blocat în array-ul "notoptions" din memcache.

Dacă folosești memcache și aceasta pare o posibilitate, încearcă să te conectezi prin telnet la mașină pe portul 11211. Tastează delete blogid:options:notoptions, unde blogid este ID-ul blogului unde apare problema. Reîmprospătează panoul de administrare și verifică dacă apar rolurile în meniul derulant. Dacă da, ai găsit problema.

ACTUALIZARE: OK, deci nu ai găsit problema - nu foloseai memcache. Totuși, aș verifica obiectul de roluri, căutând unul corupt sau inexistent. Cred că este cel mai bun indiciu. Poți folosi acest cod pentru a afișa conținutul tabelului de opțiuni:

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
Comentarii

Editor. Nu știu cum a ajuns memcache pe serverul meu. Nu îl folosesc deloc. Poate pentru că am instalat w3 cache. Am încercat să-l șterg, dar mi-a dat mesajul not_found. Am continuat și l-am dezactivat, din moment ce nu îl folosesc. Totuși, problema încă persistă.

Geo Geo
11 mar. 2011 04:50:12

Îmi pare rău că aceasta nu a fost soluția pentru problema ta. Am întâlnit această situație des, așa că a fost cea mai bună presupunere a mea. Aș continua să investighez obiectul de roluri pentru acel blog. Există? Am actualizat răspunsul meu mai sus în speranța că va fi de ajutor.

editor editor
11 mar. 2011 20:24:06
0

MULȚUMESC. Această problemă a reprezentat 10 ore solide de depanare. A fost o adevărată provocare pentru mine.

Pentru a dezvolta puțin acest subiect, am adăugat o funcție pe site-ul meu care vă va permite să rezolvați această problemă dacă creați site-uri programatic.

În esență, aceasta va verifica dacă wp_user_roles a fost setat în blogul specificat. Dacă este setat, funcția va folosi wp_user_roles pentru a seta o nouă opțiune în modul corect.

  /**
   * Uneori, rolurile utilizatorilor nu sunt setate corect la înființarea unui site nou
   * Pentru a remedia această problemă, verificăm dacă datele sunt adăugate corect și actualizăm dacă nu sunt
   * Vezi 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 apr. 2018 18:47:41
0

Am vrut doar să-ți mulțumesc pentru acest articol, deoarece am căutat o soluție la această problemă de mult timp.

Se dovedea că problema era cauzată de faptul că am folosit un plugin pentru a clona site-urile mele și acesta nu a actualizat corect tabela wp_##_user_roles. Când site-ul a fost copiat de la wp_13... și clonat pe un nou site wp_81..., această intrare a rămas blocată la wp_13.

4 dec. 2014 06:28:44
1

Vreau să subliniez că unii utilizatori pot avea încă un tabel de utilizatori gol pentru site-ul lor principal. Dacă această problemă apare, modalitatea de a o rezolva este următoarea:

  1. Accesați tabelul wp_usermeta
  2. Căutați orice intrări cu meta_key wp_capabilities
  3. Modificați meta_key din wp_capabilities în wp_1_capabilities

Cred că "1" este întotdeauna ID-ul site-ului principal.

Salutări.

21 iul. 2016 21:41:27
Comentarii

Prefixul wp_ este setat în wp-config.php și implicit este wp_. Numărul 1 reprezintă într-adevăr site-ul principal. Dar nu trebuie să fie neapărat 1, deoarece acesta este un ID unic și incrementat care este generat automat.

kaiser kaiser
21 iul. 2016 22:05:34
0

Instalează acest plugin: https://wordpress.org/plugins/capability-manager-enhanced/

Accesează site-ul tău > Capabilități > Setări > Backup > Resetare Roluri, apasă pe "Resetează la Valorile Implicite WordPress" și va rezolva problema pe site-ul tău.

Nimic altceva nu a funcționat pentru mine.

4 nov. 2021 16:30:24