Что означает поле wp_capabilities в таблице wp_usermeta

19 июн. 2013 г., 16:07:14
Просмотры: 35.9K
Голосов: 11

Я новичок в WordPress, в таблице wp_usermeta я заметил, что у нас есть строка

meta_key                meta_value
wp_capabilities       a:1:{s:13:"administrator";b:1;}

Во-первых, что означает meta_value a:1:{s:13:"administrator";b:1;}, где можно найти точное объяснение этого поля? Или я хочу узнать всё о ролях, пользователях и возможностях, где я могу получить эту информацию.

Во-вторых, как создать новые роли через API WordPress программным путем?

Заранее спасибо.

0
Все ответы на вопрос 5
1
10

wp_capabilities сохраняет значение в виде сериализованного массива, вы можете попробовать это в своем php или для примера здесь: http://blog.tanist.co.uk/files/unserialize/.

Код:

a:1:{s:13:"administrator";b:1;}

Означает:

Array
(
   [administrator] => 1
)

Это значит, что пользователь является администратором.

Вы можете добавить новые роли в базу данных, используя функцию add_role, и запускать её следует только один раз!

19 июн. 2013 г. 16:31:55
Комментарии

Для ясности, вы можете десериализовать массив, используя PHP-функцию unserialize, и результатом в данном случае будет array('administrator' => true) в формате var_export.

Flimm Flimm
18 окт. 2017 г. 14:27:36
0

В дополнение к ответу @Krysiek, вам следует знать, что данные, хранящиеся в мета-таблицах, включая метаданные пользователей, часто сериализованы. Если вы хотите узнать, что на самом деле представляют эти данные, вы можете использовать PHP-функцию unserialize, чтобы определить их значение. Например, если пропустить значение a:1:{s:13:"administrator";b:1;} через unserialize (а затем вывести результат с помощью var_dump), получится следующее:

array(1) {
    ["administrator"]=>
    bool(true)
}

Такие же записи вы найдете в таблице options, а также в таблице post_meta.

Однако вам следует избегать прямой записи в эти таблицы. В WordPress есть функции, которые позволяют хранить и получать данные о пользователях. Например, для чтения данных из таблицы пользовательских метаданных следует использовать get_user_meta, а для записи — функцию WordPress update_user_meta. Аналогичные функции существуют для таблиц post_meta и options.

19 июн. 2013 г. 16:36:58
0

meta_value - это столбец для хранения значения мета-поля. Каждое мета-поле состоит из ключа и значения.

Думаю, эта статья из Codex о ролях и возможностях вам поможет: http://codex.wordpress.org/Roles_and_Capabilities

Для добавления пользовательских ролей следует использовать функцию add_role (http://codex.wordpress.org/Function_Reference/add_role)

И пример её использования из Codex:

$result = add_role('basic_contributor', 'Основной участник', array(
    'read' => true, // true разрешает эту возможность
    'edit_posts' => true,
    'delete_posts' => false, // false явно запрещает
));
if (null !== $result) {
    echo 'Ура! Новая роль создана!';
} else {
    echo 'Ой... роль basic_contributor уже существует.';
}
19 июн. 2013 г. 16:14:34
1

Ключ "wp_capabilities" в таблице wp_usermeta содержит сериализованное представление массива, который определяет роли пользователя и дополнительные возможности, добавленные этому пользователю с помощью $user->add_cap('my_capability');. Спасибо spaul!

Команда WordPress изначально назвала поле [prefix]_capabilities, прежде чем осознала, что "возможности" (capabilities) на самом деле группируются для пользователей, выполняющих определённую роль. Изменение значения ключа с [prefix]_capabilities на [prefix]_roles нарушило бы работу множества сторонних плагинов, а также потребовало бы масштабного рефакторинга в самом WordPress.

По этой причине можно смело утверждать, что ключ wp_capabilities в usermeta хранит роли пользователей и был бы назван wp_roles, если бы не огромное количество полезного ПО, которое ожидает именно старое название.

Поскольку этот факт очень полезен для новых энтузиастов WordPress, я рекомендую всем, кто говорит о ролях (или возможностях) в WordPress, чётко указывать, что роли пользователей перечислены в массиве, который сериализован в таблице usermeta под ключом [prefix]_capabilities.

16 янв. 2016 г. 04:43:44
Комментарии

Неверно. Вы можете легко назначить пользовательские права для конкретных пользователей, вызвав $user->add_cap('my_capability');, и тогда запись будет выглядеть как a:2:{s:13:"administrator";b:1;s:13:"my_capability";b:1;}. Роль администратора, как и другие администраторы на сайте, не будут иметь этого права.

sPaul sPaul
17 янв. 2018 г. 18:11:27
0

В таблице wp_usermeta мы можем сохранять дополнительную информацию о пользователе при создании нового пользователя или обновлении профиля существующего.

В таблице wp_usermeta есть столбец с именем meta_key, где мы можем сохранять значение, через которое можно получить или обновить значение этого поля. Например:

  • add_user_meta( 'user_id', 'meta_key', 'meta_value') — с помощью этой функции мы можем добавить мета-значение в таблицу с meta_key='meta_key'.

  • get_user_meta('user_id', 'meta_key', true) — используя эту функцию, мы можем получить значение пользователя с meta_key = 'meta_key'.

  • update_user_meta( 'user_id, 'meta_key', 'meta_value') — эта функция позволяет обновить мета-значение.

  • delete_user_meta( 'user_id', 'meta_key') — с её помощью можно удалить мета-значение пользователя.

    Если вы хотите сохранить поле Отчество для пользователей, то сохраните его в wp_usermeta с meta_key=middle_name, а его значение — в meta_value=значение, используя эти функции.

Роль — это политика доступа, предоставляемая пользователю, определяющая уровень его прав на сайте. Роли можно добавлять и удалять.

Возможности (Capabilities) — это функции, которые добавляются или ограничиваются для роли. Например, есть две роли: «gold-role» и «platinum-role». Мы можем ограничить «gold-role» так, чтобы пользователь мог только добавлять записи, но не публиковать их, а для «platinum-role» добавить возможность публикации. Также можно добавлять или удалять возможности, связанные с ролью. Можно также ограничить доступ к метабоксам записей.

Для получения дополнительной информации перейдите по ссылке Роли и возможности.

Вы можете добавить роль и задать её возможности через API WordPress или использовать плагины. На мой взгляд, Advanced Access Manager — лучший плагин для управления ролями и возможностями.

19 июн. 2013 г. 16:52:40