Apa Penggunaan Filter map_meta_cap?

20

Apa gunanya map_meta_capfilter? Filter ini tidak didokumentasikan di mana pun. Saya tidak tahu persis apa itu:

Digunakan untuk memetakan izin pengguna untuk operasi pada posting.

Apa sebenarnya artinya ini? Jika memungkinkan, berikan beberapa contoh kode contoh penggunaan yang benar.

rsman
sumber

Jawaban:

25

Filter ini memungkinkan Anda untuk memperpanjang itu map_meta_cap()fungsi . Fungsi ini dipanggil olehWP_User->has_cap() untuk mengubah kemampuan meta menjadi satu atau lebih kemampuan primitif .

Misalnya, Anda ingin tahu apakah pengguna saat ini harus diizinkan untuk mengedit pos saat ini, yang edit_postmeta kemampuan . Ini tergantung pada beberapa faktor: apakah pengguna pembuat posting? Apakah kiriman sudah diterbitkan? Apakah pos itu ditandai sebagai pribadi? Kemampuan primitif yang edit_posts, edit_published_posts, edit_others_postsdan edit_private_posts: Anda dapat menetapkan ini untuk peran pengguna . map_meta_cap()memeriksa penulis dan status kiriman dan mengembalikan kumpulan kemampuan primitif yang benar yang harus dimiliki pengguna ini untuk memungkinkan pengeditan kiriman (jika kiriman ditulis oleh orang lain dan diterbitkan, kiriman akan kembali array('edit_others_posts', 'edit_published_posts'), sehingga pengguna harus memiliki kedua kemampuan untuk terus).

Menambahkan ide ini dari kemampuan meta dan kemampuan primitif memungkinkan Anda untuk menjaga WP_Userkelas dasar bebas dari pengetahuan tentang posting dan status posting dan apa pun, dan hanya fokus pada kemampuan. Konversi sebenarnya dalam fungsi eksternal map_meta_cap(),.

Filtermap_meta_cap memungkinkan Anda untuk memperluas fungsionalitas, misalnya saat menggunakan posting khusus. Saya percaya dukungan dasar diberikan jika Anda menetapkan capabilitiesargumen register_post_type, tetapi artikel yang disebutkan oleh Justin Tadlock dan plugin Prospress memberikan contoh lengkap tentang ini. Tetapi Anda dapat menyesuaikannya untuk mengubah sistem kapabilitas sepenuhnya, jika diinginkan.

Jan Fabry
sumber
2

Ini adalah filter fungsi map_meta_cap(). Dari uraian, fungsi ini sepertinya menulis kemampuan umum ( can_do_stuff ) diteruskan menjadi lebih spesifik (jika penulis posting maka can_do_this_stuff dan can_do_that_stuff_also ), memeriksa berbagai kondisi jika diperlukan.

Sayangnya itu tidak didokumentasikan dalam Codex dan saya tidak dapat menemukan satu panggilan langsung dari fungsi ini di WP 3.0.1 sumber.

Pernahkah Anda mengalami penggunaan fungsi ini atau ingin menggunakannya untuk sesuatu? Saya berasumsi karena sepertinya tidak digunakan, mungkin ada cara yang lebih baru dan lebih baik untuk fungsi ini.

Jarang
sumber
Pengaya plug-in ini tampaknya menggunakannya: github.com/Prospress/Prospress/blob/master/pp-posts/…
rsman