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