Что означает поле wp_capabilities в таблице wp_usermeta
Я новичок в 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 программным путем?
Заранее спасибо.
wp_capabilities сохраняет значение в виде сериализованного массива, вы можете попробовать это в своем php или для примера здесь: http://blog.tanist.co.uk/files/unserialize/.
Код:
a:1:{s:13:"administrator";b:1;}
Означает:
Array
(
[administrator] => 1
)
Это значит, что пользователь является администратором.
Вы можете добавить новые роли в базу данных, используя функцию add_role, и запускать её следует только один раз!
Для ясности, вы можете десериализовать массив, используя PHP-функцию unserialize, и результатом в данном случае будет array('administrator' => true) в формате var_export.
Flimm
В дополнение к ответу @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.
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 уже существует.';
}
Ключ "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.
Неверно. Вы можете легко назначить пользовательские права для конкретных пользователей, вызвав $user->add_cap('my_capability');, и тогда запись будет выглядеть как a:2:{s:13:"administrator";b:1;s:13:"my_capability";b:1;}. Роль администратора, как и другие администраторы на сайте, не будут иметь этого права.
sPaul
В таблице 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 — лучший плагин для управления ролями и возможностями.