Чому мої ролі не відображаються на веб-сайті / мережі?


16

Моя мережа показує ролі на одних сайтах, а не на інших.

З якихось причин я не можу пояснити, коли я додаю нового користувача, у мене немає ролей, з яких можна вибрати, у спадному вікні суб-сайту в моїй мережі. Крім того, мій новий користувач, призначений для сайту, не відображається у моєму списку користувачів цього сайту.

Це щось фіксується?

Нижче зображення поточної ситуації.

Ролі не відображаються

Нижче наведено зображення, на якому зображено головний сайт із належними ролями, але під сайти мережі цього не роблять.

Показані ролі

Відповіді:


29
  1. Визначте свій багатосторонній ідентифікатор блогу. Я буду використовувати приклад 99
  2. Зайдіть у базу даних
  3. Перейдіть до цієї таблиці: wp_##_options(wp_99_options) - у вас буде таблиця для кожного блогу
  4. Знайдіть запис, де option_name=wp_user_roles
  5. Змініть текст wp_user_rolesна wp_##_user_roles("wp_99_user_roles")

Таблиця редагується буде option_id, blog_id, option_name, option_value, autoload. Однак НЕ ЗМІНУЙТЕ НІКОГО ЗАПИСУ, крім запису, де option_name= wp_user_roles. У цій таблиці буде лише один запис, як цей.

wp_user_roles використовується, коли не встановлено Multisite, і тут, схоже, це була помилка під час створення таблиці.


Дякую! Тут є рятувальні поради. Це ТОЧНО правильна відповідь.
ZaMoose

1
У мене не було "wp_user_roles" у моїй таблиці, те, що я робив, було скопіювати вміст wp_4_options> wp_user_roles (великий об'єкт json або серіалізований масив, я знаю) на нову запис під назвою wp_5_options (у цьому блозі відсутні ролі) і це виправили мою проблему. Тим не менше, проголосував +1, тому що він поставив мене на правильний шлях
Xananax

Я вирішив також ВІДКЛЮЧИТИ запис "wp _ ## _ user_roles" з головної таблиці wp_options, тому що він, схоже, переосмислив один із параметрів wp _ ## _.
Паоло

1
Блискуча відповідь!
jnthnclrk

7
Для людей, які перенесли ваш сайт та змінили префікси, помилка може бути "wp _ ## _ user_roles" замість "{new_prefix} _ ## _ user_roles"
Xhynk

2

Якщо це проблема, яку я так добре знаю, ви працюєте з установкою пам'яті за вашою установкою MU? Я виявив, що, мабуть, існує проблема кешу (засвідчена в 2.9) для об'єкта параметрів, де щось хороше (наприклад, ключ wp_user_roles) застряє в масиві пам'яті "notoptions".

Якщо ви запускаєте зверху пам’ять, і це звучить як можливість, спробуйте звернутися до машини через телефон 11211. Введіть delete blogid:options:notoptions, де blogid - це ідентифікатор блогу, в якому ви бачите проблему. Оновіть панель адміністратора і подивіться, чи є ролі у спадному меню. Якщо так, ви знайшли свою проблему.

ОНОВЛЕННЯ : Добре, значить, ви не знайшли своєї проблеми - ви не працювали в пам'яті. Я б все-таки перевірив об’єкт ролей, шукаючи корумпованого чи неіснуючого. Я вважаю, що це найкращий твій потенціал. Ви можете використовувати цей код для скидання таблиці параметрів:

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/>";
}

Редактор. Я не знаю, як memcache потрапив на мій сервер. Я його взагалі не використовую. Можливо тому, що я встановив кеш-пам'ять w3. Я спробував видалити, це дало мені повідомлення, не кажучи про знайдене. Я пішов вперед і вимкнув пам’ять, оскільки не користуюся ним. У мене все ще виникає проблема.
Гео

Вибачте, що не було вирішення вашої проблеми. Я натрапляю на цю багато, тому це було моїм найкращим здогадом. Я б продовжував вивчати об'єкт ролей цього блогу. Чи існує? Оновлена ​​моя відповідь вище, сподіваючись, що це допоможе.
редактор

1

У мене виникли проблеми з установкою Multisite після перевстановлення WordPress та відновлення з резервної копії Updraft Plus.

Коли я перевірив user_rolesзапис, параметр_імен все ще був встановлений на початковий префікс чотирьох символів, наприклад pre1_user_roles, тоді як префікс для другої установки був чимось на зразок pre2_user_roles.

Я оновив це, pre2_user_rolesі параметри негайно з’явилися на сторінці параметрів користувача.


1

ДЯКУЮ. Ця проблема являє собою надійні 10 годин налагодження. Це був справжній ведмідь для мене.

Щоб трохи розширити цю проблему, я додав на свій сайт функцію, яка дозволить вам вирішити цю проблему, якщо ви створюєте сайти програмно.

В основному, це перевірить, чи wp_user_rolesвстановлено у вказаному блозі. Якщо це так, функція використовуватиме wp_user_rolesдля встановлення нової опції в правильному порядку.

  /**
   * 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

Я просто хотів сказати спасибі за цю статтю, бо я довго шукав рішення цієї проблеми.

Це було просто тому, що я використовував плагін для клонування моїх сайтів, і він ніколи не оновлювався wp_##_user_rolesналежним чином. Коли сайт, скопійований з wp_13...нього, був клонований на новий сайт, wp_81...але цей запис все ще затримався wp_13.


0

Я просто хочу зазначити, що деякі люди все ще можуть мати порожню таблицю користувачів сайту - спеціально для їх кореневого сайту. Якщо ця проблема виникає, спосіб її вирішити, виконавши наступне:

  1. Перейдіть до таблиці wp_usermeta
  2. Знайдіть будь-які записи з мета- ключем wp_capability
  3. Змініть мета_кейк з wp_capability на wp_1_capability

Я вважаю, що "1" - це завжди ідентифікатор кореневого сайту.

Ура.


wp_Приставка встановлюється Сінд wp-config.phpі тільки по замовчуванням в wp_. 1Дійсно є корінь сайту. Але це не повинно бути, 1оскільки це унікальний і зростаючий ідентифікатор, який генерується автоматично.
кайзер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.