У чому полягає використання фільтра map_meta_cap?


20

Яке використання map_meta_capфільтра? Цей фільтр ніде не задокументований. У мене незрозуміле уявлення про те, що це може бути:

Використовується для відображення дозволів користувача на операції над публікаціями.

Для чого саме він призначений? Якщо можливо, наведіть приклад прикладу правильного використання коду.

Відповіді:


25

Цей фільтр дозволяє продовжити на 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 надає повні приклади цього. Але ви можете налаштувати його, щоб повністю перетворити систему можливостей, якщо хочете.



2

Це фільтр функції map_meta_cap(). З опису ця функція, схоже, виписує загальну можливість ( can_do_stuff ), передану на більш конкретну (якщо автор публікації, то can_do_this_stuff і can_do_that_stuff_also ), перевіряючи різні умови, якщо це потрібно.

На жаль, це не зафіксовано в Codex, і я не можу знайти жодного прямого виклику цієї функції у джерелі WP 3.0.1.

Ви стикалися з використанням цієї функції або хочете її використовувати для чогось? Я припускаю, оскільки це, здається, не використовується, є певно новіші та кращі способи цієї функціональності.


Здається, цей автор плагінів використовує його: github.com/Prospress/Prospress/blob/master/pp-posts/…
rsman
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.