В чем разница между возможностями Role и Meta; Когда использовать фильтр map_meta_cap ()

Я очень запутался в следующих вещах:

  1. разница между возможностями Role и Meta,
  2. разница между возможностями Meta и Primitive,
  3. , когда использовать фильтр map_meta_cap().

Было много ситуаций, когда я добавляю существующие или пользовательские возможности WP к существующим или настраиваемым ролям WP, ожидая, что он будет работать из коробки, и в большинстве случаев это не так.

Я вижу, что люди упоминают о map_meta_cap(), но я не могу найти хорошее объяснение, что он на самом деле делает, и когда я должны использовать его и когда возможности будут работать из коробки.

Надеюсь, это имеет смысл.

Я был бы чрезвычайно благодарен за объяснения или ссылки на ресурсы, которые объясняют это хорошо.

Спасибо, Даша

7 голосов | спросил dashaluna 24 J000000Thursday14 2014, 15:14:20

1 ответ


2
  

разница между возможностями Role и Meta ​​p>

Было бы лучше спросить сравнение Role с помощью Capabilities, а не только Meta capabilities, но как простой ответ:

A Role определяет набор задач, которым может быть назначен пользователь, которому назначена роль.

Capabilities присваиваются Roles

  

разница между мета-и примитивными возможностями?

Мета-возможности

edit_post, read_post и delete_post называются Meta Capabilities, потому что они зависят от контекста, например, редактируемое /прочитанное /удаленное сообщение. Это не имеет никакого смысла, если вы скажете, у какого-то пользователя есть возможность edit_post, потому что кто-то спросит вас: он /он может редактировать размещать?

Примитивные возможности

Это такие возможности, как edit_posts, которые не зависят от какого-либо контекста и неотъемлемы от пользователя. Если у кого-то есть edit_posts capabality, он /он может редактировать сообщения.

  

, когда использовать фильтр map_meta_cap ()?

Когда вы регистрируете новый тип сообщения , используя register_post_type , у вас есть возможность использовать для capability_type, который говорит, каковы возможности, похожие на? Там вы можете просто сказать post, что означает, что ваши возможности аналогичны возможностям post.

Bu, если вам нужна дополнительная настройка, вы можете сказать 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 в качестве массива, например. array ('story', 'stories') первый элемент будет использоваться для особых возможностей и второго элемента массива для множественных возможностей.

Функция map_meta_cap() вызывается WP_User->has_cap(), чтобы преобразовать мета-способность в одну или несколько примитивных возможностей.

Существует также параметр map_meta_cap в register_post_type, что делает то же самое, при регистрации post_type.

ответил Trix 23 Jam1000000amSat, 23 Jan 2016 00:51:36 +030016 2016, 00:51:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132