В Чем Польза Фильтра map meta cap?
В чем польза map_meta_cap
фильтр? Этот фильтр нигде не задокументирован. У меня есть неясное представление о том, что это может быть:
Используется для сопоставления разрешений пользователя для операций с записями.
Для чего именно это предназначено? Если возможно, пожалуйста, приведите какой-нибудь пример кода для его правильного использования.
3 answers
Этот фильтр позволяет расширить функцию 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
, но упомянутая статья Джастина Тэдлока и Процветает плагин предоставляет полные примеры этого. Но вы можете настроить его так, чтобы полностью перевернуть систему возможностей, если хотите.
Этот фильтр можно использовать для сопоставления возможностей метаданных для пользовательских типов записей. В этой статье есть хороший пример кода:
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_ также ), проверяя различные условия, если это необходимо.
К сожалению, это не задокументировано в Кодексе, и я не могу найти ни одного прямого вызова этой функции в источнике WP 3.0.1.
Сталкивались ли вы с использованием этой функции или хотите ее использовать за что-то? Я предполагаю, что, поскольку он, похоже, не используется, вероятно, существуют более новые и лучшие способы для этой функции.