разница между ролью и мета-возможностями
Это было бы лучше спросить сравнить Role
с Capabilities
, а не просто Meta capabilities
, а как простой ответ:
A Role
определяет набор задач, которым пользователю разрешено выполнять роль.
Capabilities
назначены на Roles
разница между мета и примитивными возможностями?
Мета возможности
edit_post
, read_post
И , delete_post
как говорят, Meta Capabilities
потому что они зависят от контекста, например , пост редактируется / чтения / удаления. Это не имеет смысла, если вы говорите, что у какого-то пользователя есть edit_post
возможность, потому что кто-то спросит вас: она / он может редактировать какой пост?
Примитивные возможности
Это такие возможности, edit_posts
которые не зависят от контекста и присущи пользователю. Если у кого-то есть edit_posts
способности, он / она может редактировать сообщения.
когда использовать фильтр map_meta_cap ()?
Когда вы регистрируете новый тип записи с помощью register_post_type
, у вас есть возможность использовать, для capability_type
которой говорится, на что похожи возможности? Там вы можете просто сказать post
, что означает, что ваши возможности аналогичны возможностям post
пост-типа.
Но если вам нужно больше настроек, вы можете сказать book
или array( 'book', 'books' )
(то же самое), например, иметь следующие возможности:
capabilities' => array(
'edit_post' => 'edit_book',
'read_post' => 'read_book',
'delete_post' => 'delete_book',
'edit_posts' => 'edit_books',
'edit_others_posts' => 'edit_others_books',
'publish_posts' => 'publish_books',
'read_private_posts' => 'read_private_books',
'create_posts' => 'edit_books',
)
При использовании capability_type
в качестве массива, например, массива ('story', 'Stories'), первый элемент будет использоваться для единичных возможностей, а второй элемент массива - для множественных возможностей.
map_meta_cap()
Функция вызывается WP_User->has_cap()
для преобразования мета способность одного или более примитивных возможностей.
При регистрации post_type есть также map_meta_cap
параметр in register_post_type
, который делает то же самое.