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