Jakie jest zastosowanie filtra map_meta_cap?

20

Do czego służy map_meta_capfiltr? Ten filtr nie jest nigdzie udokumentowany. Mam niejasne pojęcie, co to może być:

Służy do mapowania uprawnień użytkownika do operacji na postach.

Do czego to dokładnie służy? Jeśli to możliwe, podaj przykładowy przykład prawidłowego użycia kodu.

rsman
źródło

Odpowiedzi:

25

Filtr ten pozwala na przedłużenie z map_meta_cap()funkcji . Ta funkcja jest wywoływana przezWP_User->has_cap() konwersję meta-zdolności do jednej lub więcej prymitywnych możliwości .

Na przykład, chcesz wiedzieć, czy bieżący użytkownik powinien mieć możliwość edycji obecne stanowisko, na edit_postzdolności meta . Zależy to od niektórych czynników: czy użytkownik jest autorem postu? Czy post jest już opublikowany? Czy post jest oznaczony jako prywatny? Możliwości są prymitywne edit_posts, edit_published_posts, edit_others_postsi edit_private_posts: można przypisać je do ról użytkowników . map_meta_cap()sprawdza autora i status posta i zwraca poprawny zestaw pierwotnych możliwości, że ten użytkownik musi pozwolić na edycję postu (jeśli post jest napisany przez kogoś innego i opublikowany, to zwróci array('edit_others_posts', 'edit_published_posts'), więc użytkownik musi mieć obie możliwości, aby: kontyntynuj).

Dodanie tego pojęcia o meta-zdolnościach i prymitywnych możliwościach pozwala utrzymać WP_Userklasę podstawową wolną od wiedzy na temat postów i statusów postów itp., I po prostu skupić się na możliwościach. Rzeczywista konwersji w funkcji zewnętrznego map_meta_cap().

Filtrmap_meta_cap pozwala rozszerzyć funkcjonalność, na przykład podczas korzystania z niestandardowych postów. Wierzę, że podstawowe wsparcie jest zapewnione, jeśli ustawisz capabilitiesargument register_post_type, ale wspomniany artykuł Justina Tadlocka i wtyczki Prospress dostarcza kompletnych przykładów tego. Ale możesz go dostosować, aby całkowicie odwrócić system możliwości, jeśli chcesz.

Jan Fabry
źródło
2

To jest filtr funkcji map_meta_cap(). Z opisu ta funkcja wydaje się wypisywać ogólne możliwości ( can_do_stuff ) przekazane do bardziej szczegółowych (jeśli autor postu to can_do_this_stuff i can_do_that_stuff_also ), sprawdzając różne warunki w razie potrzeby.

Niestety nie jest to udokumentowane w Kodeksie i nie mogę znaleźć ani jednego bezpośredniego wywołania tej funkcji w źródle WP 3.0.1.

Czy napotkałeś użycie tej funkcji lub chcesz jej użyć do czegoś? Zakładam, że ponieważ wydaje się, że nie jest używany, prawdopodobnie istnieją nowsze i lepsze sposoby na tę funkcjonalność.

Rarst
źródło
Wydaje się, że ten autor wtyczki go używa: github.com/Prospress/Prospress/blob/master/pp-posts/…
rsman