В Чем Польза Фильтра map meta cap?


В чем польза map_meta_cap фильтр? Этот фильтр нигде не задокументирован. У меня есть неясное представление о том, что это может быть:

Используется для сопоставления разрешений пользователя для операций с записями.

Для чего именно это предназначено? Если возможно, пожалуйста, приведите какой-нибудь пример кода для его правильного использования.

Author: Sven, 2010-09-12

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

 26
Author: Jan Fabry, 2010-10-05 13:25:34

Этот фильтр можно использовать для сопоставления возможностей метаданных для пользовательских типов записей. В этой статье есть хороший пример кода:

Http://justintadlock.com/archives/2010/07/10/meta-capabilities-for-custom-post-types

 7
Author: sorich87, 2010-10-03 08:01:17

Это фильтр функции map_meta_cap(). Из описания эта функция, похоже, выписывает общую возможность (can_do_stuff), переданную в более конкретную (если автор сообщения, то can_do_this_stuff и can_do_that_stuff_ также ), проверяя различные условия, если это необходимо.

К сожалению, это не задокументировано в Кодексе, и я не могу найти ни одного прямого вызова этой функции в источнике WP 3.0.1.

Сталкивались ли вы с использованием этой функции или хотите ее использовать за что-то? Я предполагаю, что, поскольку он, похоже, не используется, вероятно, существуют более новые и лучшие способы для этой функции.

 2
Author: Rarst, 2010-09-12 08:11:09