Где определены доступные роли в базе данных wp_?

12 янв. 2013 г., 04:01:56
Просмотры: 63.6K
Голосов: 27

Я попал в список тестировщиков закрытой беты плагина, который использую в мультисайтовой сети.

Авторы плагина добавили в код создание пользовательской роли. У них есть ошибка, которая удаляет возможность назначать пользователям любые роли, кроме их одной пользовательской роли.

Когда я захожу на страницу ../wp-admin/network/site-users.php, выпадающие списки "Добавить пользователя" показывают только одну роль, добавленную этим плагином. Выпадающее меню изменения роли показывает все стандартные роли WordPress, плюс несколько дополнительных ролей, добавленных этим и другими плагинами. Если я пытаюсь изменить роль пользователя на одну из этих ролей, я получаю страницу с ошибкой "Вы не можете назначать пользователям эту роль".

Я обсуждал это с разработчиком, и они, похоже, в недоумении.

Я просмотрел базу данных и кодекс, но не могу найти, где определены допустимые роли.

0
Все ответы на вопрос 2
3
47

Роли пользователей хранятся в таблице wp_options.

Ищите параметр с именем wp_user_roles в таблице wp_options.

12 янв. 2013 г. 05:09:51
Комментарии

Обратите внимание, что option_name может содержать префикс вашей базы данных вместо wp_. В моей базе данных было именно так.

Eric K Eric K
8 янв. 2021 г. 01:02:24

Также может содержать ID блога, если вы используете мультисайт, например "wp_37_user_roles".

Matt Raines Matt Raines
1 июл. 2021 г. 16:55:15

Да, если у вас мультисайт и есть ID блога, то и таблица, и option_name будут содержать этот ID. Поэтому используйте, например, такой запрос: select * from wp_37_options where option_name = 'wp_37_user_roles';

Tyler Collier Tyler Collier
2 нояб. 2021 г. 22:43:03
5
27

Роли пользователей хранятся в таблице wp_user_meta

Чтобы проверить роли пользователей, сначала найдите ID пользователя в таблице wp_users (название столбца — ID)

Теперь перейдите в таблицу wp_usermeta и выполните поиск, где столбец user_id равен ID, соответствующему ID из таблицы wp_users.

Вы получите список строк с метаданными выбранного пользователя. Строка с meta_key равным wp_capabilities определяет роль пользователя.

Значение wp_capabilities для:

  • Администратор: a:1:{s:13:"administrator";b:1;}
  • Покупатель WooCommerce: a:1:{s:8:"customer";b:1;}
20 июл. 2017 г. 09:57:22
Комментарии

Ваш ответ касается назначения роли пользователю. Автор вопроса спрашивал о самих определениях ролей, которые хранятся в wp_options.

Brett Donald Brett Donald
1 окт. 2019 г. 06:06:49

что a:1:{s:13:"administrator";b:1;} выглядит как неаккуратная строка, что значат все эти цифры вокруг основного содержания?

Johnny Rockex Johnny Rockex
31 мая 2021 г. 16:37:16

@Johnny Rockex Это сериализованные данные - способ хранения нескольких значений в одной ячейке базы данных... часто это считается не лучшей практикой, так как может усложнить работу. "s" означает "string" (строка из 13 символов), "b" - Boolean (логическое значение) - погуглите "Data Serialisation in MySQL" для подробностей.

mayersdesign mayersdesign
27 июл. 2021 г. 19:42:43

@mayersdesign Я понимаю ваше недовольство, интуитивно мне тоже хотелось бы переструктурировать таблицы, чтобы в каждом поле было одно значение, но кто знает — это работает.

Johnny Rockex Johnny Rockex
28 июл. 2021 г. 14:22:33

Не отвечает на вопрос автора, но это именно то, что я искал. Спасибо!

Davey Davey
28 авг. 2024 г. 13:26:16