Was ist der Unterschied zwischen Rollen- und Metafunktionen? Wann wird der Filter map_meta_cap () verwendet?

8

Ich bin sehr verwirrt über die folgenden Dinge:

  1. Unterschied zwischen Rollen- und Metafunktionen,
  2. Unterschied zwischen Meta und primitiven Fähigkeiten,
  3. wann map_meta_cap()Filter zu verwenden .

Es gab viele Situationen, in denen ich vorhandene oder benutzerdefinierte WP-Funktionen zu vorhandenen oder benutzerdefinierten WP-Rollen hinzufügte und erwartete, dass dies sofort funktioniert und in den meisten Fällen nicht.

Ich sehe, dass die Leute über map_meta_cap()Filter sprechen, aber ich kann keine gute Erklärung dafür finden, was es tatsächlich tut und wann ich es verwenden muss und wann die Funktionen sofort funktionieren.

Ich hoffe das ergibt Sinn.

Ich würde mich sehr über Erklärungen oder Links zu Ressourcen freuen, die dies gut erklären.

Danke, Dasha

Dashaluna
quelle
Mögliches Duplikat von Was ist die Verwendung von map_meta_cap Filter?
John Blackbourn
Dieser Beitrag von Justin Tadlock war letztendlich die Informationsquelle, von der ich am meisten profitiert habe.
Justin Bell
War meine Antwort hilfreich für Sie?! Bitte akzeptieren Sie und stimmen Sie ab, wenn es hilfreich war
Pmpr

Antworten:

3

Unterschied zwischen Rollen- und Metafunktionen

Das wäre besser, die vergleichen , um zu fragen , Rolemit Capabilities, nicht nur Meta capabilities, sondern als eine einfache Antwort:

A Roledefiniert eine Reihe von Aufgaben, die ein Benutzer ausführen darf, dem die Rolle zugewiesen wurde.

Capabilities sind zugeordnet Roles

Unterschied zwischen Meta und primitiven Fähigkeiten?

Meta-Funktionen

edit_post,, read_postund delete_postsollen sein, Meta Capabilitiesweil sie vom Kontext abhängen, zum Beispiel dem Beitrag, der bearbeitet / gelesen / gelöscht wird. Das macht keinen Sinn, wenn Sie sagen, ein Benutzer hat edit_postFähigkeiten, weil jemand Sie fragen wird: Er / sie kann welchen Beitrag bearbeiten?

Primitive Fähigkeiten

Hierbei handelt es sich um Funktionen edit_posts, die nicht von einem Kontext abhängen und dem Benutzer eigen sind. Wenn jemand über edit_postsKapazitäten verfügt , kann er Beiträge bearbeiten.

Wann wird der Filter map_meta_cap () verwendet?

Wenn Sie einen neuen Beitragstyp mit registrieren register_post_type , haben Sie eine Option, für capability_typedie angegeben wird, welche Funktionen ähnlich sind. Dort können Sie einfach sagen post, was bedeutet, dass Ihre Fähigkeiten denen des postPost-Typs ähnlich sind .

Wenn Sie weitere Anpassungen benötigen, können Sie beispielsweise bookoder array( 'book', 'books' )(dasselbe) beispielsweise die folgenden Funktionen verwenden:

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', 
)

Bei Verwendung capability_typeals Array, z. B. Array ('Geschichte', 'Geschichten'), wird das erste Element für die Singularfähigkeiten und das zweite Arrayelement für die Pluralfähigkeiten verwendet.

Die map_meta_cap()Funktion wird aufgerufen WP_User->has_cap(), um eine Meta-Fähigkeit in eine oder mehrere primitive Fähigkeiten umzuwandeln.

Es gibt auch einen map_meta_capParameter in register_post_type, der dasselbe bei der Registrierung von post_type tut.

Pmpr
quelle
...If somebody has edit_posts capabality, she/he can edit posts...aber welche / wessen Beiträge?
T.Todua