разница между ролью и мета-возможностями
Это было бы лучше спросить сравнить 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, который делает то же самое.