Apa perbedaan antara kemampuan Peran dan Meta; Kapan menggunakan filter map_meta_cap ()

8

Saya menjadi sangat bingung tentang hal-hal berikut:

  1. perbedaan antara kemampuan Peran dan Meta,
  2. perbedaan antara kemampuan Meta dan Primitive,
  3. kapan harus menggunakan map_meta_cap()filter.

Ada banyak situasi, di mana saya menambahkan kemampuan WP yang ada atau kustom untuk WP yang ada atau peran kustom, berharap untuk bekerja di luar kotak dan sebagian besar kali tidak.

Saya melihat bahwa orang menyebutkan tentang map_meta_cap()filter, tetapi saya tidak dapat menemukan penjelasan yang baik tentang apa yang sebenarnya dilakukannya dan kapan saya harus menggunakannya dan kapan kemampuan akan bekerja di luar kotak.

Saya harap itu masuk akal.

Saya akan sangat menghargai penjelasan atau tautan ke sumber daya yang menjelaskan hal ini dengan baik.

Terima kasih, Dasha

dashaluna
sumber
kemungkinan duplikat Apa Penggunaan Filter map_meta_cap?
John Blackbourn
Posting oleh Justin Tadlock ini akhirnya menjadi sumber informasi yang paling banyak saya manfaatkan .
Justin Bell
Apakah jawaban saya membantu Anda ?! Harap terima dan pilih apakah itu membantu
Pmpr

Jawaban:

3

perbedaan antara kemampuan Peran dan Meta

Itu akan lebih baik untuk meminta perbandingan Roledengan Capabilities, bukan hanya Meta capabilities, tetapi sebagai jawaban sederhana:

A Rolemendefinisikan satu set tugas yang diberikan pengguna pada peran yang diizinkan untuk dilakukan.

Capabilities ditugaskan untuk Roles

perbedaan antara kemampuan Meta dan Primitive?

Kemampuan meta

edit_post,, read_postdan delete_postdikatakan Meta Capabilitieskarena mereka tergantung pada konteksnya, misalnya tulisan yang sedang diedit / baca / hapus. Itu tidak masuk akal jika Anda mengatakan, beberapa pengguna memiliki edit_postkemampuan, karena seseorang akan bertanya kepada Anda: ia dapat mengedit posting mana?

Kemampuan primitif

Ini adalah kemampuan seperti edit_postsyang tidak bergantung pada konteks apa pun, dan bersifat intrinsik bagi pengguna. Jika seseorang memiliki edit_postskemampuan, dia dapat mengedit posting.

kapan harus menggunakan filter map_meta_cap ()?

Ketika Anda mendaftarkan jenis posting baru menggunakan register_post_type , Anda memiliki opsi untuk menggunakan capability_typeyang mengatakan, apa kemampuannya, mirip dengan? Di sana Anda bisa saja mengatakan post, artinya kemampuan Anda mirip dengan postjenis posting.

Namun jika Anda memerlukan lebih banyak penyesuaian, Anda dapat mengatakan bookatau array( 'book', 'books' )(sama), misalnya, untuk memiliki kemampuan berikut:

capabilities' => array(
  'edit_post'          => 'edit_book', 
  'read_post'          => 'read_book', 
  'delete_post'        => 'delete_book', 
  'edit_posts'         => 'edit_books', 
  'edit_others_posts'  => 'edit_others_books', 
  'publish_posts'      => 'publish_books',       
  'read_private_posts' => 'read_private_books', 
  'create_posts'       => 'edit_books', 
)

Saat menggunakan capability_typesebagai array, misalnya array ('cerita', 'cerita') elemen pertama akan digunakan untuk kemampuan tunggal dan elemen array kedua untuk kemampuan jamak.

The map_meta_cap()fungsi disebut oleh WP_User->has_cap()untuk mengkonversi kemampuan meta untuk satu atau lebih primitif kemampuan.

Ada juga map_meta_capparameter di register_post_type, yang melakukan hal yang sama, pada registrasi post_type.

Pmpr
sumber
...If somebody has edit_posts capabality, she/he can edit posts...tetapi yang / yang posting siapa?
T.Todua