Этот фильтр позволяет продлить на map_meta_cap()
функцию . Эта функция вызываетсяWP_User->has_cap()
для преобразования мета-возможности в одну или несколько примитивных возможностей .
Например, вы хотите знать , должен ли текущий пользователь будет разрешено редактировать текущую запись, в edit_post
мета - возможности . Это зависит от некоторых факторов: является ли пользователь автором сообщения? Сообщение уже опубликовано? Помечен ли пост как частный? Примитивные возможности являются edit_posts
, edit_published_posts
, edit_others_posts
и edit_private_posts
вы можете назначить их роли пользователя . map_meta_cap()
проверяет автора и статус сообщения и возвращает правильный набор примитивных возможностей, которые этот пользователь должен разрешить редактировать сообщение (если сообщение написано кем-то другим и опубликовано, оно вернется array('edit_others_posts', 'edit_published_posts')
, поэтому пользователь должен иметь обе возможности для Продолжить).
Добавление этой идеи мета-возможностей и примитивных возможностей позволяет вам WP_User
освободить базовый класс от знания постов и статусов постов и всего остального, и просто сосредоточиться на возможностях. Фактическое преобразование во внешней функции map_meta_cap()
.
Фильтрmap_meta_cap
позволяет расширить функциональность, например, при использовании пользовательских сообщений. Я полагаю, что базовая поддержка предоставляется, если вы зададитеcapabilities
аргумент register_post_type
, но упомянутая статья Джастина Тэдлока и плагина Prospress предоставляет полные примеры этого. Но вы можете настроить его так, чтобы полностью перевернуть систему возможностей, если хотите.