В чем польза map_meta_cap
фильтра? Этот фильтр нигде не документирован. У меня смутное представление о том, что это может быть:
Используется для сопоставления разрешений пользователя с операциями над сообщениями.
Для чего именно он предназначен? Если возможно, приведите пример кода для его правильного использования.
Этот фильтр позволяет расширить функцию
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 предоставляет полные примеры этого. Но вы можете настроить его, чтобы полностью перевернуть систему возможностей, если хотите.Этот автор подключаемого модуля, похоже, использует его: github.com/Prospress/Prospress/blob/master/pp-posts/…
Этот фильтр можно использовать для отображения мета-возможностей для пользовательских типов сообщений. В этой статье есть хороший пример кода:
http://justintadlock.com/archives/2010/07/10/meta-capabilities-for-custom-post-types
Это фильтр функции
map_meta_cap()
. Судя по описанию, эта функция выписывает общие возможности ( can_do_stuff ), которые передаются в более конкретные (если автор сообщения, то can_do_this_stuff и can_do_that_stuff_also ), при необходимости проверяя различные условия.К сожалению, это не задокументировано в Кодексе, и я не могу найти ни одного прямого вызова этой функции в исходниках WP 3.0.1.
Сталкивались ли вы с использованием этой функции или хотите использовать ее для чего-то? Я предполагаю, что, поскольку он, похоже, не используется, вероятно, есть более новые и лучшие способы для этой функциональности.