Wie kann man bestimmte Post-Typen daran hindern, von bestimmten Benutzerrollen (zB Autor) gelesen oder hinzugefügt zu werden?

Ich bin nicht sehr klar, wie Admin-Bereich Post-Typen Zugriff auf bestimmte Benutzerrollen einzuschränken.

In meinem Fall habe ich einen Post-Typ wie “Lieferanten”, die ich “Autoren” nicht zeigen möchte.

Standardmäßig erlaubt WP Autoren, ihre eigenen Inhalte zu durchsuchen, hinzuzufügen oder zu bearbeiten. Aber ich möchte nicht, dass meine Autoren einen “Lieferanten” hinzufügen oder Einträge von anderen Administratoren durchsuchen.

Ich habe in WordPress-Code und den Codex nachgesehen : http://codex.wordpress.org/Function_Reference/register_post_type

Es scheint einen Parameter in register_post_type( 'supplier', $args ) , den ich in $ args wie folgt zu definieren versuchte, neben anderen Variablen, die ich hier nicht auflisten muss, da mein Post-Typ funktioniert fein:

  'capabilities' => array( 'edit_others_posts' ), 'map_meta_cap' => true, 

Ich habe den Parameter "map_meta_cap" nicht vollständig verstanden – ich nahm an, dass es durch die Angabe von 'edit_others_posts' genügt hätte, den Zugriff von “Lieferanten” durch einfache Autoren zu 'edit_others_posts' (die die Beiträge anderer nicht bearbeiten können). Ich habe das getestet und funktioniert nicht. Autoren können weiterhin alle “Lieferanten” -Inhalte im Admin-Bereich sehen und einen Lieferanten hinzufügen, als wäre es ein Blog-Post.

Wie kann ich verhindern, dass Autoren (oder andere spezifische Benutzerrollen oder Benutzer ohne bestimmte functionen) auf bestimmte benutzerdefinierte Post-Typen, die ich erstellt habe, zugreifen und Inhalte hinzufügen?

Danke

Solutions Collecting From Web of "Wie kann man bestimmte Post-Typen daran hindern, von bestimmten Benutzerrollen (zB Autor) gelesen oder hinzugefügt zu werden?"

Zur Lösung Ihrer Frage: Verwenden Sie in den Argumenten register_post_type den Parameter capability_type und gewähren Sie den Benutzern dann die spezifischen functionen. Wenn Sie beispielsweise 'capability_type' => 'supplier' edit_supplier 'capability_type' => 'supplier' edit_supplier , erteilen Sie die edit_supplier 'capability_type' => 'supplier' edit_supplier 'capability_type' => 'supplier' nur für alle Administratoren

Mehr Details

capabilities nimmt ein Array der Fähigkeiten im Format 'edit_post' => 'edit_supplier'

Das bedeutet im Grunde, dass, wo auch immer der edit_post Fähigkeit zuvor verwendet hat, jetzt edit_supplier (Sie müssen allen Benutzern die edit_supplier Fähigkeit selbst edit_supplier , einschließlich der Administratoren, wordpress macht das nicht für Sie)

Wenn Sie das functions-Array nicht map_meta_cap und map_meta_cap true ist, generiert wordpress das standardmäßige functionsarray aus dem bereitgestellten capability_type Wert

 [edit_post] => "edit_{$capability_type}" [read_post] => "read_{$capability_type}" [delete_post] => "delete_{$capability_type}" [edit_posts] => "edit_{$capability_type}s" [edit_others_posts] => "edit_others_{$capability_type}s" [publish_posts] => "publish_{$capability_type}s" [read_private_posts] => "read_private_{$capability_type}s" [delete_posts] => "delete_{$capability_type}s" [delete_private_posts] => "delete_private_{$capability_type}s" [delete_published_posts] => "delete_published_{$capability_type}s" [delete_others_posts] => "delete_others_{$capability_type}s" [edit_private_posts] => "edit_private_{$capability_type}s" [edit_published_posts] => "edit_published_{$capability_type}s" 

Dabei steht {$capability_type} für den von Ihnen angegebenen Wert. Wenn map_meta_cap false ist, wird wordpress den capability_type Parameter vollständig ignorieren (oder sagen, dass es “post” ist und dann map_meta_cap )