Я очень запутался в следующих вещах:
- разница между ролями и мета-возможностями,
- разница между мета и примитивными возможностями,
- когда использовать
map_meta_cap()
фильтр.
Было много ситуаций, когда я добавлял существующие или настраиваемые возможности WP к существующим или настраиваемым ролям WP, ожидая, что он будет работать «из коробки», и в большинстве случаев это не так.
Я вижу, что люди упоминают о map_meta_cap()
фильтре, но я не могу найти хорошего объяснения, что он на самом деле делает, и когда мне нужно его использовать, и когда возможности будут работать «из коробки».
Я надеюсь, что в этом есть смысл.
Я был бы очень признателен за объяснения или ссылки на ресурсы, которые объясняют это хорошо.
Спасибо даша
capabilities
user-roles
dashaluna
источник
источник
Ответы:
Это было бы лучше спросить сравнить
Role
сCapabilities
, а не простоMeta capabilities
, а как простой ответ:A
Role
определяет набор задач, которым пользователю разрешено выполнять роль.Capabilities
назначены наRoles
Мета возможности
edit_post
,read_post
И ,delete_post
как говорят,Meta Capabilities
потому что они зависят от контекста, например , пост редактируется / чтения / удаления. Это не имеет смысла, если вы говорите, что у какого-то пользователя естьedit_post
возможность, потому что кто-то спросит вас: она / он может редактировать какой пост?Примитивные возможности
Это такие возможности,
edit_posts
которые не зависят от контекста и присущи пользователю. Если у кого-то естьedit_posts
способности, он / она может редактировать сообщения.Когда вы регистрируете новый тип записи с помощью
register_post_type
, у вас есть возможность использовать, дляcapability_type
которой говорится, на что похожи возможности? Там вы можете просто сказатьpost
, что означает, что ваши возможности аналогичны возможностямpost
пост-типа.Но если вам нужно больше настроек, вы можете сказать
book
илиarray( 'book', 'books' )
(то же самое), например, иметь следующие возможности:При использовании
capability_type
в качестве массива, например, массива ('story', 'Stories'), первый элемент будет использоваться для единичных возможностей, а второй элемент массива - для множественных возможностей.map_meta_cap()
Функция вызываетсяWP_User->has_cap()
для преобразования мета способность одного или более примитивных возможностей.При регистрации post_type есть также
map_meta_cap
параметр inregister_post_type
, который делает то же самое.источник
...If somebody has edit_posts capabality, she/he can edit posts...
но какие / чьи посты?